Dot-Net

Visual Studio 不載入項目引用

  • September 29, 2020

我有一個 Visual Studio (Community 2013) 解決方案,在我的電腦上有許多 c# 項目,我剛剛從 7 升級到 Windows 10。該項目使用 .Net Framework 4.0 客戶端配置文件。在 win7 上一切正常,但現在其中一個項目似乎沒有載入引用。引用的項目附近有黃色三角形,哪些不是從同一解決方案引用的項目(因此未載入由 NuGet 下載的系統和引用)。

參考…

資源是解決方案中的另一個項目,其他項目不是。當我打開系統引用的屬性選項卡時,該Path欄位為空,因此該Resolved欄位為False

空路徑

此外,在 .csproj 文件中,一切似乎都正常,<HintPath>在需要的地方有節點,具有相對(或絕對,如果引用在另一個驅動器上)和正確的現有路徑。

另一件奇怪的事情:在對象瀏覽器中,所有引用都(似乎)載入了:

對象瀏覽器似乎沒問題

所以我該怎麼做:

  • 重新創建項目文件(通過創建新項目並再次添加所有文件和引用);
  • 更改項目配置中的某些內容;
  • 使用較新版本的 .Net;
  • 改變 VS 的配置;
  • 使用另一個 VS(例如 Community 2015)還是重新安裝目前的?

我也遇到了這個問題,我花了一些時間才弄清楚。問題是 NuGet 改變了包的恢復方式。“舊方式”需要包含 3 個文件(nuget.config、nuget.exe、nuget.targets)的“.nuget”文件夾以及項目文件中的一些設置,例如:

<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
 <PropertyGroup>
     <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
 </PropertyGroup>
 <Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
</Target>

這導致項目中斷。

要解決此問題,請將缺少的目錄複製到項目中(使用舊版本的 Visual Studio/NuGet 或從擁有它的同事處獲取),或者只是從項目文件中刪除上述部分。

為獲得最佳效果,還要刪除:

<RestorePackages>true</RestorePackages> 

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

從項目文件!


在此處查找有關該主題的更多資訊:

http://blog.davidebbo.com/2014/01/the-right-way-to-restore-nuget-packages.html

http://docs.nuget.org/consume/package-restore/migrating-to-automatic-package-restore

https://docs.microsoft.com/en-us/visualstudio/ide/troubleshooting-broken-references

引用自:https://stackoverflow.com/questions/32425557