2009-09-24 19 views
6

Przyzwyczajam się do używania nant dla wydań kompilacji. Ale zacząłem używać asp.net MVC, a ja wybrałem konfigurację do instalacji z .vdproj.Mam błąd podczas budowania pliku .vdproj na msbuild z nantem

Ale kiedy ja nazywam:

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

w nant, mój wynik to:

[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.

ktoś ma jakąś wskazówkę, czy rozwiązanie?

Jeśli użyję devenv, będę miał problem?

Odpowiedz

7

MSBuild nie może budować projektów .vdproj. Do tego celu powinieneś użyć Visual Studio (devenv.com).

+0

... lub przenieść z Visual Studio .NET Setup i wdrażania projektu na WiX, który będzie mimo to wspierany w VS 2010. –

+0

Spójrz na http://wix.sourceforge.net/, aby uzyskać więcej informacji na temat WiX. –

+0

*** DLACZEGO MSBuild nie może zbudować projektów .vdproj ***? jakiekolwiek pełne odniesienie w MSDN? W każdym razie 'Wix' ma bardzo dużą ** krzywą uczenia się ** – Kiquenet

3

FYI to nadal nie jest obsługiwana w .NET 4.0

10

Oto jak zrobiłem to niedawno przy użyciu devenv jak msbuild nie zrobi .vdproj plików. Ten artykuł naprawdę pomógł z pierwszą aktualizacją pliku .vdproj: 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 czy wypróbowałeś jakikolwiek skrypt typu '% DevEnv%"% BaseSln% "/ build"% BuildConfiguration% |% BuildPlatform% "/ Projekt"% BaseVdproj% "/ Out" vs_errors.txt "'? – Kiquenet

+0

Stosuje się również *** skrypt MSBuild *** ('* .targets')? – Kiquenet

1

Wystarczy rozwinąć postu Crise „s - budowania projektu vdproj używając VS2010 devenv poprzez linię poleceń nie działa. Pre-2010 działa dobrze Uważam (zobacz link text)

+0

Wygląda na to, że są pewne problemy, których używałem w 2008 r. Firma Microsoft oświadczyła, że ​​"aktualny szacunek poprawki jest w połowie sierpnia". – CRice

Powiązane problemy