當我嘗試構建C#控制檯應用程序(可能還有其他應用程序)時,看起來TargetFrameworkDirectories
設置不正確;特別是它省略了Facades目錄。MSBuild錯誤地設置TargetFrameworkDirectories
由於我一直在嘗試診斷問題一段時間,下面列出了可能相關的事實。
- 當試圖在Visual Studio 2012中構建引用Reactive Extension庫(使用NuGet進行管理)的項目時,問題就顯現出來了。錯誤(或警告)是
warning MSB3267: The primary reference "System.Runtime", which is a framework assembly, could not be resolved in the currently targeted framework. ".NETFramework,Version=v4.5"
。 MSBuild的執行ResolveAssemblyReference
- 我可以從MSBuild的命令行,這似乎更簡單
- 其他工作站不會出現問題重現錯誤期間發生的問題。在好機器上運行msbuild並在壞機器上啓動了一些不同的日誌文件
- 在好機器
TargetFrameworkDirectories
(ResolveAssemblyReference
的參數)是C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\,C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\Facades\
,但是在壞機器上它缺少第二個條目(外牆目錄) 掃描過的好和壞的MSBuild日誌文件中的以下區別露面:
- 目標
AssignProjectConfiguration
在惡劣的構建被跳過,但在好身材 - 一些運行目標如
GetInstalledSDKLocations
被跳過了良好的構建,但沒有提到壞的構建 ResolveAssemblyReference
任務通過Assemblies
與Implicit=true
在良好的構建,但不是壞的構建。ResolveAssemblyReference
任務在錯誤構建中傳遞任務參數TargetFrameworkDirectories
與C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\
,但良好構建Facades目錄(請參見上面)作爲第二項。
- 目標
因爲這是C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets
驅動I顯示差異好的和壞的機器上的文件。他們包含很多不同之處第一個區別是項目元素(第17行),在優質機器上有一個額外的屬性TreatAsLocalProperty="OutDir"
。在好機器上,目標文件包含更多評論,如<!-- VS10 without SP1 and without VS11 will not have VisualStudioVersion set, so do that here -->
。跳到AssignProjectConfiguration
目標,好機器有Condition="'$(CurrentSolutionConfigurationContents)' != '' or '@(ProjectReference)'!=''"
,而壞機器有Condition="'@(ProjectReference)'!=''"
(我假設解釋了爲什麼它被跳過)。
我試過的最後一件事是修復「Microsoft .NET Framework 4.5」和「Microsoft .NET Framework 4.5 Multi-Targeting Pack」。它沒有幫助。
任何意見,將不勝感激,特別是如果我可以避免重新安裝Visual Studio 2012!
更新:似乎重新安裝.NET 4.5之後「僅」修復VS2012解決了我的問題。我最好的猜測是什麼導致了這個問題,不知何故,我的Microsoft.Common.targets被更改爲舊版本。我不知道什麼可以改變目標文件。
這似乎是一個.NET問題。也許只是重新安裝/修復.NET 4.5? – leppie 2013-03-19 18:17:20
應該補充說我修復了.NET 4.5。我會修改帖子來指出這一點。 – banbh 2013-03-19 20:53:58
在詢問[在MSBuild論壇上的相關問題](http://social.msdn.microsoft.com/Forums/en-US/msbuild/thread/e9d339fb-31cf-47d7-86c7-2bdfb77027a6)後,似乎_reinstalling_。 NET(而不僅僅是修復)解決了這個問題。 @leppie,如果您將您的評論發佈到帖子中,我會將其標記爲答案。 – banbh 2013-03-25 14:12:23