読者です 読者をやめる 読者になる 読者になる

Visual Studio 2015 で古いプロジェクトを開いた時に「参照」が壊れた

.NET

現象

Visual Studio 2012のプロジェクトを2015で開いたら、参照が全部壊れているプロジェクトがあった。(全部ではない)

  • SystemとかSystem.Coreとか基本的なやつやlog4netといったnuget管理の物も黄色の!がでて参照できなくなっている
    • 参照からランタイムを選んでプロパティを表示するとバージョンが0.0.0.0になっている
  • 参照の追加で選び直しても駄目
  • 対象のランタイムを切り替えても駄目

解消方法

結局、csprojファイルを直接エディタで開いて直しました。
以下の部分を削除します。

  <Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
  <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>

ちなみにソリューションファイル(sln)の変換は上手くいってました。

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Express 2012 for Windows Desktop
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Express 14 for Windows Desktop
VisualStudioVersion = 14.0.25420.1
MinimumVisualStudioVersion = 10.0.40219.1