2017-01-05 25 views
0

更新後,我的Windows 7出現問題,無論是安全模式還是恢復模式都無法解決問題。我被迫完全重新安裝Windows。爲了開發我的項目,我需要Visual Studio 2010.由ReSharper引起的VS2010構建異常; SetEnvironmentVariable任務未找到

我總是安裝了ReSharper並習慣了它的功能,所以我也安裝了它。

一切設置我試圖建立我的解決方案,但遇到了一個問題... img1 (下劃線文件可以在這裏找到:https://up.zone/aj

後試圖解決問題的時間,我figgured指出ReSharper的是問題。如果沒有安裝ReSharper,我可以很好地構建解決方案。安裝後,即使所有功能都關閉並且服務暫停,也會導致上圖中的這些錯誤顯示在構建中。

我設法按照他的留言本reddit的用戶說明解決三分之二的錯誤:https://up.zone/ag

現在我只剩下一個多例外,我不能figgure如何解決。我找不到任何有用的Google搜索,這意味着你們是我最後的希望。如果沒有ReSharper,我真的不想回去開發。

這是一個: img2

任何想法?

謝謝!


更新1

我figgured,這個問題必須在NuGet.targets文件,位於我們的解決方案的.nuget文件夾。

我設法按照this post的建議找到解決方法,現在我可以毫無任何錯誤地構建解決方案。

總之,刪除此行了你*的.csproj的文件

<Import Project="$(SolutionDir)\.nuget\nuget.targets" />

雖然這個作品,我不認爲這可能是解決方案。我認爲這條線是有原因的。任何對NuGet有深入瞭解的人都知道如何正確地解決這個問題?


更新2

我發現,只要你刷新你的解決方案/項目,該線被再次加入。另外,如果你有某些依賴關係,nuget應該爲你下載 - 它不會,因爲那個調用和處理這個操作的行被刪除了。

我現在正處在一個我知道問題出在哪裏的地步,但不知道爲什麼會造成問題。

ReSharper是否會改變NuGet的行爲方式?據我所知,由於ReSharper的原因,沒有任何東西會被添加到NuGet.targets文件或從中刪除。

+0

它的價值:我認爲SetEnvironmentVariable引用的Task是通常由代碼分析(roslyn)聲明的。它不在編譯的DLL中,而是直接在.targets文件中。在我的PC上,它存在於C:\ Program Files文件(x86)\ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ CodeAnalysis \ Microsoft.CodeAnalysis.Targets和C:\ Program Files文件(x86)\ MSBuild \ Microsoft \ VisualStudio \ v12 .0 \ CodeAnalysis \ Microsoft.CodeAnalysis.Targets。 –

+0

@SimonMourier因爲我沒有安裝VS 14,所以'C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v14.0 \'中沒有一個名爲'CodeAnalysis'的文件夾,但是有一個文件夾在'C:\ Program Files文件(x86)\ MSBuild \ Microsoft \ VisualStudio \ v10.0'中。 無論如何,例外情況是「無法找到任務」,所以我認爲該文件內部缺少某些內容。你介意提供你的文件進行比較嗎? –

+0

我有另一臺v10.0的機器,Micr osoft.CodeAnalysis.T文件中沒有定義SetEnvironmentVariable。我想這是問題的根源。您的機器上的一些代碼需要更新版本。我建議你安裝msbuild 2013(v12):https://www.microsoft.com/en-us/download/details.aspx?id=40760和/或msbuild 2015(v14),因爲msbuild不是專門用VS今天,但是是一個獨立的工具/ redist(實際上它現在甚至是開源)。 –

回答

1

還有一個關於此主題的報告,在https://youtrack.jetbrains.com/issue/RSRP-462271。 (a)在MSBuild XML文件而不是DLL中使用C#源代碼形式使用MSBuild任務(b)使用MSBuild開源DLL中的某些MSBuild任務針對其自己的項目文件處理需求隨附最新版本的ReSharper。

在MSBuild運行期間,源代碼被編譯成一個任務DLL(這不是很常見的東西; Roslyn會這麼做,而不是運送一個DLL?)。從Visual Studio(而不是使用msbuild.exe)進行構建時,將使用進程內MSBuild實例,並且它將與ReSharper在相同的應用程序域中運行,因此它使用常見程序集參考resoluiton。如果它不太準確,那麼它可能會意外地通過短名稱選擇錯誤的DLL版本,這會破壞任務編譯(這是一個單獨的錯誤,可能被緩存),然後在運行時導致未找到任務錯誤(在這裏是SetEnvironmentVariable task not found)。

我已經在基於源代碼的任務的樣本解決方案上進行了測試,並且無法將其破解。如此微不足道的情況是可以的。從未聽過原始記者的回覆,所以沒有進一步的進展。

現在我有一個暗示,這是Visual Studio 10(該機器上安裝的任何其他VS版本?)和maaaaybe這是Roslyn的任務。我們可以肯定地知道,如果使用更詳細的日誌(通過在工具|選項|項目和解決方案|生成並運行| MSBuild項目生成輸出詳細程度設置爲至少詳細)中的日誌選項來運行MSBuild並構建錯誤的項目。

我也會用VS10試一試,並用新數據更新這個回覆。

+0

我只安裝了VS2010(以下組件爲https://up.zone/av)以及VS2008 C++組件,因爲我們有幾個較舊的項目這需要該版本中提供的特定編譯器。我們不能使用更新的版本,因爲我們使用了在新版本中刪除的特定報告功能,所以基本上我堅持使用VS2010,直到我們更新依賴關係。 –

+0

也是,我無法在新創建的解決方案中複製該錯誤。它只是在我們解決方案中的102個項目中出現了2個。我看不到這些項目有什麼不同,它們似乎很完美:s –

+0

詳細的MSBuild日誌如何?他們應該揭示這個差異,我很希望。 – hypersw