2013-04-03 20 views
1

我有一個解決方案,其中有多個vdproj文件。 我在build.proj文件中創建一個項目組:調用devenv.exe多個.vdproj文件

<ItemGroup> 
<SetupProjectFiles Include="$(MSBuildProjectDirectory\**\*.vdproj"> 
</SetupProjectFiles> 

現在我想調用devenv.exe的每個那些?

<Exec Command="devenv.exe %(SetupProjectFiles)"></Exec> 

不工作...任何人有任何指針嗎?

+0

究竟怎麼了 '不工作'? – Lanorkin

回答

5

有幾件事情值得仔細檢查。查看這個列表並查看下面的代碼片段以獲得一個工作示例。

  1. 確保vdproj文件的路徑正確。嘗試爲日誌中的每個文件路徑寫入消息,以便驗證包含哪些vdproj文件。

  2. 確保vdproj包含在解決方案的所需構建配置中;如果您正在構建「調試」配置,請確保在解決方案的構建Configuration Manager中爲「調試」配置組合檢查了vdproj。您可以在全局範圍內設置它,也可以爲每個SetupProjectFiles項目的元數據中指定的每個vdproj進行設置(請參閱下面的片段作爲示例)。

  3. 確保使用完整的devenv.exe路徑。你可以使用一個環境變量來幫助解決這個問題。

  4. 確保MSBuild Exec task syntaxdevenv.exe syntax和是正確的,例如,使用/build開關和使用&quot;周圍使用空格字符的路徑。


編輯:代碼更正錯別字


<ItemGroup> 
    <SetupProjectFiles Include="$(MSBuildProjectDirectory)\**\*.vdproj"> 
    <Configuration>Release</Configuration> 
    </SetupProjectFiles> 
</ItemGroup> 

<PropertyGroup> 
    <!-- VS110COMNTOOLS is for VS2012. VS100COMNTOOLS is for VS 2010. VS90COMNTOOLS is for VS2008 --> 
    <DevEnvLocation>$(VS100COMNTOOLS)..\IDE\devenv.exe</DevEnvLocation> 
</PropertyGroup> 

<Message Text="vdproj file: %(SetupProjectFiles.FullPath)" /> 

<Exec Command="&quot;$(DevEnvLocation)&quot; &quot;%(SetupProjectFiles.FullPath)&quot; /build &quot;%(SetupProjectFiles.Configuration)&quot;" /> 
+0

這也不起作用。我們的vdproj文件被稱爲blah.blah.vdproj或有時候blah.blah.setup.vdproj – Bernard

+0

@Bernard,我在上面的代碼中發現了一個缺失的括號,所以如果您嘗試使用它而沒有捕獲該問題,我可以看到爲什麼vdproj文件不會被發現。除此之外,我不確定爲什麼您的代碼或我的示例中顯示的通配符不起作用;他們每個人都會找到blah.blah.vdproj或blah.blah.setup.vdproj文件。你有錯誤嗎?您是否在我的建議答案中完成了第2項,以驗證是否找到了vdproj文件? – Michael

+0

@Bernard,我也在Exec任務中發現了一個錯字......現在已經被糾正了。 – Michael