2017-09-23 75 views
1

我已經在這個問題上燃燒了幾個小時,並且做了大量的搜索來弄清楚發生了什麼事情。爲什麼Microsoft.Build.Framework.dll 15.3不加載csproj,15.1呢?

我有一個從.csproj文件加載項目文件的應用程序,因此它引用了Microsoft.Build dll。在我的一臺電腦上,一切正常。另一方面,當我嘗試加載.csproj文件時,應用程序崩潰。

我得到的例外是Microsoft.Build.Exceptions.InvalidProjectFileException類型的以下消息:

的工具版本「15.0」是無法識別的。可用的工具版本是「14.0」,「2.0」,「3.5」,「4.0」。

起初我不確定是什麼導致了這個問題,所以我想我會將.dlls作爲我的項目的一部分。也就是說,我將.dlls複製到我的項目中的一個文件夾中,並引用了這些.dll文件。但是,當我跑我的項目GAC載入偏好正在咬我,作爲輸出窗口顯示我不同的.dll文件被加載:

加載「C:\ WINDOWS \ Microsoft.Net \裝配\ GAC_MSIL \ Microsoft.Build.Framework \ v4.0_15.1.0.0__b03f5f7f11d50a3a \ Microsoft.Build.Framework.dll」。

因此,我通過導航到該位置並查看.dll上的屬性,查看了每臺計算機上加載的.dll文件。

在運行的計算機上,.dll的版本爲15.1.1015。 在沒有工作的機器上.dll的版本爲15.3.409

我還沒有發現有人在討論這個確切的問題,但是我已經看到人們在升級到Visual Studio 15.3後討論了問題。果然,無法工作的計算機具有Visual Studio 15.3.5,而工作的計算機具有Visual Studio 15.2。

爲了嘗試解決這個問題,我刪除了使用步驟,從GAC 15.3這裏概述:

Could not load type 'Microsoft.Build.Framework.SdkReference' on project open in VS 2017 U1 (15.3)

唉,即使這種變化之後,我仍然遇到了同樣的問題,所以改變了GAC來指向更早的Microsoft.Build.Framework.dll仍然沒有修復它(也許是因爲Microsoft.Build系列中的其他文件正在以15.3的GAC格式運行)。我確實證實了由GAC加載的版本現在是15.1。

是否有另一種解決方法或修復方法可以應用於解決此問題?

+0

您是否嘗試使用msbuild命令行進行構建?你應該通過這一步,否則問題可能在msbuild。嘗試'msbuild <你的解決方案。>' –

+0

我不知道爲什麼msbuild .exe會是問題,因爲我還沒有執行構建 - 只是試圖加載.csproj。也就是說,該項目在Visual Studio中正確加載,並且在VS 2017 –

回答

0

我希望別人可以用比這更好的東西來回答,但是我可以在加載項目時強制版本14.0來解決問題。我的項目不需要Visual Studio 2017(MSBuild 15.X)。由於它可以在Visual Studio 2015中加載,所以我只需在Project構造函數中指定版本號:

coreVisualStudioProject = new Project(fileName, null, "14.0", new ProjectCollection()); 
+0

的開發人員命令提示符中也可以在msbuild中正常生成,這要感謝您在此分享您的解決方案,您可以將其標記爲答案,這樣可以幫助其他社區成員獲得相同的問題。 –