2011-11-16 9 views
6

Fecha de creación 16/11/2011 9:24:11 AM. Proyecto "C: \ Builds \ 1 \ NetTellerMigration \ NetTellerMigrationBuild \ Sources \ blah.sln" en el nodo 1 (destinos predeterminados). ValidateSolutionConfiguration: Configuración de la solución de construcción "Desarrollo | Predeterminado". MSBUILD: advertencia MSB4078: El archivo de proyecto "blah \ blah.dtproj" no es compatible con MSBuild y no se puede compilar. [C: \ Builds \ 1 \ NetTellerMigration \ NetTellerMigrationBuild \ Sources \ blah.sln] Done Building Project "C: \ Builds \ 1 \ NetTellerMigration \ NetTellerMigrationBuild \ Sources \ blah.sln" (destinos predeterminados).Problema de TFS CI con un paquete SSIS

Compilación exitosa.

"C: \ Builds \ 1 \ NetTellerMigration \ blahBuild \ Sources \ blah.sln" (objetivo por defecto) (1) -> (objetivo blah_b) -> MSBUILD: advertencia MSB4078: El archivo de proyecto "bla \ blah.dtproj "no es compatible con MSBuild y no se puede construir. [C: \ Builds \ 1 \ \ NetTellerMigration NetTellerMigrationBuild \ Sources \ blah.sln]

1 Warning(s) 
0 Error(s) 

Tiempo transcurrido 00: 00: 00,42

Actualmente tengo instalado con tfs2010 SqlExpress y Estoy intentando 'sin éxito' implementar una integración continua con un paquete SSIS. Mi objetivo es crear una compilación activada por un código checkin. Tengo una definición de compilación para doso pero se muestra la advertencia que se muestra arriba y no se copian archivos '.dtsx' en el directorio de compilación?

Creo que tiene algo que ver con el agente de creación de la orientación v4 del .NET Framework, pero podría estar equivocado. De todos modos, cualquiera que tenga experiencia con este problema apreciará cualquier ayuda.

Respuesta

6

MSBuild no puede construir proyectos de SSIS (.dtproj) porque el formato de estos proyectos es anterior a VS2010. Lo mejor que puede hacer aquí es tener el shell de MSBuild en el proyecto SSIS. Puede crear un proyecto de C# vacío para hacer esto. A continuación, abra el archivo .csproj para el nuevo proyecto en un editor de texto y establecer el objetivo BeforeBuild a lo siguiente:

<Target Name="BeforeBuild"> 
    <!-- Build the analysis SSIS project --> 
    <Exec Command="&quot;$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0\@InstallDir)\devenv.exe&quot; blah\blah.dtproj /Build" /> 
</Target> 

Ajustar el camino bla/blah.dtproj para su proyecto. Esto ejecutará la versión VS2008 de devenv para construir el proyecto SSIS.

A continuación se muestra un ejemplo de lo que todo el archivo .csproj podría ser:

<?xml version="1.0" encoding="utf-8"?> 
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0" DefaultTargets="Build"> 
    <PropertyGroup> 
     <OutputPath>Bin</OutputPath> 
    </PropertyGroup> 
    <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> 
    <Target Name="BeforeBuild"> 
     <!-- Build the analysis SSIS project --> 
     <Exec Command="&quot;$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0\@InstallDir)\devenv.exe&quot; blah\blah.dtproj /Build" /> 
    </Target> 
</Project> 
+0

poco de un truco. Estoy tratando de integrar una construcción CI y esto no funcionaría si lo hiciera. Debe haber una manera más elegante? – Christo

+0

Estoy de acuerdo, pero no creo que haya otra manera. El agente de compilación TFS solo funciona con scripts MSBuild. Supongo que los archivos del proyecto en la próxima versión de BIDS funcionarán con MSBuild. Puede echar un vistazo a la última CTP de SQL Server 2012. –

+0

ok gracias Brent. echó un vistazo rápido a CTP 2012 pero nada detallado en la especificación de la característica con respecto a este problema específico. Solo puedo presumir su dirección. Gracias de nuevo. – Christo

0

tuve que tweek ligeramente mi objetivo para que funcione:

<Target Name="BeforeBuild"> 
<!-- Build the analysis SSIS project --> 
<Exec Command="&quot;$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\9.0\@InstallDir)devenv.exe&quot; &quot;$(SolutionPath)&quot; /Build &quot;Release|Any CPU&quot; /project projectFileName.dtproj" /> 
</Target> 
Cuestiones relacionadas