2009-09-24 11 views
6

के साथ एक .vdproj बनाने में त्रुटि है I बिल्ड निर्माण के लिए नैन का उपयोग करने के लिए उपयोग किया जा रहा है। लेकिन मैंने एएसपीएनटी एमवीसी का उपयोग शुरू कर दिया है, और मैं एक .vdproj के साथ स्थापना के लिए सेटअप बनाते हैं।मुझे msbuild पर nt

लेकिन, जब मैं फोन:

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

nant में, मेरे परिणाम है:

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

किसी ने कुछ सुराग, या एक समाधान है?

यदि मैं डेवेनव का उपयोग करता हूं, तो मुझे कोई समस्या होगी?

उत्तर

7

एमएसबिल्ड .vdproj परियोजनाओं का निर्माण नहीं कर सकता है। इसके लिए आपको विजुअल स्टूडियो (devenv.com) का उपयोग करना चाहिए।

+0

... या विजुअल स्टूडियो .NET सेटअप और डिप्लॉयमेंट प्रोजेक्ट से वाईएक्स में स्थानांतरित करें जो किसी भी तरह से वीएस 2010 में समर्थित होने जा रहा है। –

+0

वाईएक्स पर अधिक जानकारी के लिए http://wix.sourceforge.net/ पर एक नज़र डालें। –

+0

*** क्यों MSBuild नहीं बना सकता .vdproj परियोजनाओं ***? एमएसडीएन में कोई पूर्ण संदर्भ? वैसे भी, 'विक्स' में बहुत बड़ा ** सीखने की अवस्था ** – Kiquenet

3

FYI करें यह अभी भी .NET 4.0

10

में समर्थित नहीं है यहाँ मैं यह कैसे किया हाल ही में MSBuild फ़ाइलों .vdproj काम नहीं चलेगा के रूप में devenv का उपयोग कर रहा है। यह लेख वास्तव में पहली .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 में इंस्टॉलर प्रोजेक्ट्स के लिए विजुअल स्टूडियो एक्सटेंशन हैं क्या आपने '% DevEnv%"% BaseSln% "/ build"% BuildConfiguration% |% BuildPlatform% "/ Project"% BaseVdproj% "/ आउट" vs_errors.txt "जैसी किसी भी स्क्रिप्ट की कोशिश की? – Kiquenet

+0

भी लागू होता है *** एमएसबिल्ड स्क्रिप्ट *** ('*। लक्ष्यीकरण')? – Kiquenet

1

बस crise की पोस्ट पर भी विस्तार करने के लिए - कमांड लाइन के माध्यम से VS2010 devenv का उपयोग कर काम नहीं करता है एक vdproj परियोजना का निर्माण। प्री -2010 ठीक काम करता है मेरा मानना ​​है (link text देखें)

+0

ऐसा लगता है कि कुछ समस्याएं हैं, मैं 2008 का उपयोग कर रहा था। माइक्रोसॉफ्ट ने कहा है "हॉटफिक्स के लिए वर्तमान अनुमान मध्य अगस्त है।" – CRice