2011-03-22 27 views
5

相關的解決方案和項目文件這個問題是在:的MSBuild工作在命令行中,但VS2010說,一個項目是 「未選中」

http://code.google.com/p/benfwaves/source/browse/trunk/BenfWaves.sln?r=26

http://code.google.com/p/benfwaves/source/browse/trunk/BenfWaves.Library/BenfWaves.Library.csproj?r=26

http://code.google.com/p/benfwaves/source/browse/trunk/BenfWaves.Client/BenfWaves.Client.csproj?r=26

http://code.google.com/p/benfwaves/source/browse/trunk/BenfWaves.Tests/BenfWaves.Tests.csproj?r=26

我試圖重構項目文件eli減少冗餘,並允許編譯到.NET 3.5以及.NET 4.0。目前,VS2010 IDE可以針對.NET 4.0上的任何CPU進行編譯。如果我嘗試任何CPU的.NET 3.5,它說:

錯誤1無法加載文件或程序「System.Drawing中,版本= 4.0.0.0,文化=中性公鑰= b03f5f7f11d50a3a」或之一其依賴。該系統找不到指定的文件。 123線,5位d:\項目\ \幹線\ BenfWaves.Client \屬性\ Resources.resx 123 5 BenfWaves.Client

BenfWaves我看,這可能是與resgen.exe一個問題,但改變該文件上的32位標誌沒有改善任何情況。此外,IDE並不認爲這些項目的配置比任何CPU,這會產生以下問題的其他任何東西:

------ Skipped Build: Project: BenfWaves.Library, Configuration: Debug-4.0 Any CPU ------ 
      Project not selected to build for this solution configuration 
------ Build started: Project: BenfWaves.Client, Configuration: Debug-4.0 x86 ------ 
      BenfWaves.Client -> D:\projects\BenfWaves\trunk\BenfWaves.Client\bin\x86\Debug-4.0\BenfWaves.Client.exe 
------ Skipped Build: Project: BenfWaves.Tests, Configuration: Debug-4.0 Any CPU ------ 
      Project not selected to build for this solution configuration 
========== Build: 1 succeeded or up-to-date, 0 failed, 2 skipped ========== 

它跳過的東西,它不應該。命令行中的msbuild適用於所有三種平臺,並且不會跳過任何內容。

任何建議都會非常受歡迎。謝謝。

編輯:在第27次修改後,至少「未選中」的問題不再存在了,因爲我在項目中添加了虛擬配置行以欺騙VS2010進入工作狀態。但是,.NET 3.5下的資源編譯問題仍然存在。

回答

3

我發現你已經修正了sln中的配置錯誤。 Resx問題與here中描述的相同。

+0

你是對的資源斷裂。 – Reinderien 2011-03-23 05:37:27

0

您可能想要嘗試編輯您的解決方案構建配置。

http://msdn.microsoft.com/en-us/library/kwybya3w.aspx

按照標題下的指示「要選擇和編輯解決方案生成配置」

+0

問題是GUI Solution Build Configuration缺少條目。我解決了這個特定的問題(請參閱更新的問題文本),但是在.NET 3.5中仍然沒有編譯。 – Reinderien 2011-03-22 19:30:12

5

儘量保證既$(Configuration)和$(平臺)有一個默認值,通過把這些行先在第一的PropertyGroup ...

<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> 
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> 

因爲IDE以特殊的方式對待這些屬性和可能會混淆如果他們在項目未裝載值,這可能是相關的。

+0

很好的建議,但事實上它是這樣的:http://code.google.com/p/benfwaves/source/browse/trunk/BenfWaves.Client/BenfWaves.Client.csproj從第21行到第32行。 – Reinderien 2011-03-23 00:13:06

+0

此解決方案對我有幫助。我從命令行運行msbuild,Configuration和Platform參數默認爲在我的情況下沒有效果的東西。通過明確指定爲我工作的兩個參數,例如:'msbuild.exe MyApp.sln/p:Configuration = Debug/p:Platform = Win32' – papaiatis 2014-11-05 14:31:39

13
  • 在解決方案資源管理器中,右鍵單擊解決方案
  • 然後去到Configuration Manager
  • 確保構建列檢查要建立每一次的項目。
相關問題