2009-09-24 31 views
6

Tôi quen với việc sử dụng nant để xây dựng bản phát hành. Nhưng tôi đã bắt đầu sử dụng asp.net MVC, và tôi lựa chọn làm cho các thiết lập để cài đặt với một .vdproj.Tôi gặp lỗi khi xây dựng tệp .vdproj trên msbuild với nant

Tuy nhiên, khi tôi gọi là:

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

trong Nant, kết quả của tôi là:

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

người có một số đầu mối, hoặc một giải pháp?

Nếu tôi sử dụng devenv, tôi sẽ gặp sự cố?

Trả lời

7

MSBuild không thể tạo dự án .vdproj. Bạn nên sử dụng Visual Studio (devenv.com) cho việc này.

+0

... hoặc di chuyển từ Visual Studio.NET Thiết lập và triển khai dự án để WiX mà sẽ được hỗ trợ trong VS 2010 anyway. –

+0

Hãy xem http://wix.sourceforge.net/ để biết thêm thông tin về WiX. –

+0

*** TẠI SAO KHÔNG MSBuild không thể xây dựng các dự án .proproj ***? bất kỳ tham chiếu đầy đủ trong MSDN? Dù sao, 'Wix' có ** đường cong học tập rất lớn ** – Kiquenet

3

FYI này vẫn không được hỗ trợ trong .NET 4.0

10

Dưới đây là cách tôi đã làm điều này thời gian gần đây sử dụng devenv như msbuild sẽ không làm .vdproj tập tin. Bài viết này thực sự giúp với việc cập nhật các tập tin .vdproj đầu tiên: 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 bạn đã thử bất kỳ tập lệnh nào như '% DevEnv%"% BaseSln% "/ build"% BuildConfiguration% |% BuildPlatform% "/ Dự án"% BaseVdproj% "/ Out" vs_errors.txt "'? – Kiquenet

+0

Áp dụng quá *** MSBuild script *** ('* .targets')? – Kiquenet

1

Chỉ cần để mở rộng trên bài CRise 's - xây dựng một dự án vdproj sử dụng VS2010 devenv thông qua dòng lệnh không hoạt động. Pre-2010 hoạt động tốt Tôi tin (xem link text)

+0

Hình như có một số vấn đề, tôi đã sử dụng 2008. Microsoft đã tuyên bố "Ước tính hiện tại cho hotfix là giữa tháng Tám." – CRice

Các vấn đề liên quan