C#
VisualStudio
VisualStudio2017

.netのビルドでv3.5のビルドが失敗する

エラーの一例

error MSB3644: The reference assemblies for framework ".NETFramework,Version=v3.5" were not found. To resolve this, install the SDK or Targeting Pack for this framework version or retarget

解決法

  • dotnet コマンドではなくmsbuildを使う
  • csprojectを変更する

dotnet コマンドではなくmsbuildを使う

dotnet build -c Release
ではなく
dotnet msbuild /p:Configuration=Release
または
msbuild /p:Configuration=Release
を使用する

または
msbuild /p:Configuration=Release /p:TargetFramework=net35

csprojectを変更する

<PropertyGroup>
  <FrameworkPathOverride Condition="'$(TargetFramework)' == 'net35'">C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v3.5\Profile\Client</FrameworkPathOverride>
  <TargetFramework>net35</TargetFramework>
</PropertyGroup>

FrameworkPathOverrideでパスをOverRideするのがミソ