2009-09-24 19 views
6

Me estoy acostumbrando a usar nant para versiones de compilación. Pero comencé a usar asp.net MVC, y yo selecciono la configuración para la instalación con .vdproj.Tengo un error al construir un .vdproj en msbuild con nant

Pero, cuando llamo al:

< exec program="${dotnet.dir}/msbuild.exe" commandline='"./Wum.sln" /v:q /nologo /p:Configuration=Release' />

en Nant, mi resultado es:

[exec] D:\My Documents\Visual Studio 2008\Projects\Wum\Wum.sln : warning MS 
B4078: The project file "Wum.Setup\Wum.Setup.vdproj" is not supported by MSBuild 
and cannot be built.

Alguien tiene alguna pista, o una solución?

Si utilizo el devenv, ¿tendré un problema?

Respuesta

7

MSBuild no puede construir proyectos .vdproj. Deberías usar Visual Studio (devenv.com) para esto.

+0

... o pasar de Visual Studio .NET Setup and Deployment Project a WiX, que de todos modos será soportado en VS 2010. –

+0

Eche un vistazo a http://wix.sourceforge.net/ para obtener más información sobre WiX. –

+0

*** ¿POR QUÉ NO MSBuild no puede construir proyectos .vdproj ***? cualquier referencia completa en MSDN? De todos modos, 'Wix' tiene una enorme ** curva de aprendizaje ** – Kiquenet

3

FYI esto todavía no es compatible con .NET 4.0

10

Aquí es cómo hice esto utilizando recientemente devenv como msbuild no va a hacer .vdproj archivos. Este artículo realmente ayudó con la actualización del archivo .vdproj primera: http://www.hanselman.com/blog/BuildingMSIFilesFromNAntAndUpdatingTheVDProjsVersionInformationAndOtherSinsOnTuesday.aspx

<target name="someTarget"> 
    <!-- full path to setup project and project file (MSI -> vdproj) --> 
    <property name="DeploymentProjectPath" value="fullPath\proj.vdproj" /> 
    <!-- full path to source project and project file (EXE -> csproj) --> 
    <property name="DependencyProject" value="fullPath\proj.csproj" /> 
    <script language="C#"> 
    <code> 
     <![CDATA[ 
     public static void ScriptMain(Project project) 
     { 
      //Purpose of script: load the .vdproj file, replace ProductCode and PackageCode with new guids, and ProductVersion with 1.0.SnvRevisionNo., write over .vdproj file 

      string setupFileName = project.Properties["DeploymentProjectPath"]; 
      string productVersion = string.Format("1.0.{0}", project.Properties["svn.revision"]); 
      string setupFileContents; 

      //read in the .vdproj file   
      using (StreamReader sr = new StreamReader(setupFileName)) 
      { 
       setupFileContents = sr.ReadToEnd(); 
      } 

      if (!string.IsNullOrEmpty(setupFileContents)) 
      { 
       Regex expression2 = new Regex(@"(?:\""ProductCode\"" = \""8.){([\d\w-]+)}"); 
       Regex expression3 = new Regex(@"(?:\""PackageCode\"" = \""8.){([\d\w-]+)}"); 
       Regex expression4 = new Regex(@"(?:\""ProductVersion\"" = \""8.)(\d.\d.\d+)"); 
       setupFileContents = expression2.Replace(setupFileContents,"\"ProductCode\" = \"8:{" + Guid.NewGuid().ToString().ToUpper() + "}"); 
       setupFileContents = expression3.Replace(setupFileContents,"\"PackageCode\" = \"8:{" + Guid.NewGuid().ToString().ToUpper() + "}"); 
       setupFileContents = expression4.Replace(setupFileContents,"\"ProductVersion\" = \"8:" + productVersion); 

       using (TextWriter tw = new StreamWriter(setupFileName, false)) 
       { 
        tw.WriteLine(setupFileContents); 
       } 
      } 
     } 
     ]]> 
    </code> 
    </script> 

    <!-- must build the dependency first (code project), before building the MSI deployment project --> 
    <exec program="Devenv.exe" commandline='"fullPath\solution.sln" /rebuild "Release" /project "${DependencyProject}" /out "fullPath\somelog.log"'/> 
    <exec program="Devenv.exe" commandline='"fullPath\solution.sln" /rebuild "Release" /project "${DeploymentProjectPath}" /out "fullPath\somelog.log"'/> 
</target> 
+0

@GarrisonNeely ¿Has probado alguna secuencia de comandos como '% DevEnv%"% BaseSln% "/ build"% BuildConfiguration% |% BuildPlatform% "/ Project"% BaseVdproj% "/ Out" vs_errors.txt "'? – Kiquenet

+0

También se aplica *** Script de MSBuild *** ('* .targets')? – Kiquenet

1

Sólo para expandir el mensaje crise 's - la construcción de un proyecto vdproj usando devenv VS2010 través de línea de comandos no funciona. Antes de 2010 funciona bien, creo (ver link text)

+0

Parece que hay algunos problemas, yo estaba usando 2008. Microsoft ha declarado "La estimación actual para la revisión es mediados de agosto". – CRice

Cuestiones relacionadas