mac / linux `dotnet build` Ссылочные сборки для фреймворка" .NETFramework .. "не найдены - PullRequest
0 голосов
/ 11 мая 2018

При попытке создать проект в стиле Microsoft.NET.Sdk, ориентированный на net47, а не на .netcore или .net std. dotnet build выдаст ошибку об отсутствии пакета таргетинга. Вместо этого будет работать msbuild, но я бы предпочел использовать dotnet build. Есть ли способ.

/usr/local/share/dotnet/sdk/2.1.200/Microsoft.Common.CurrentVersion.targets
(1179,5): error MSB3644: The reference assemblies for framework 
".NETFramework,Version=v4.7" were not found. To resolve this, install the
 SDK or Targeting Pack for this framework version or retarget your application to a version of the framework for which you have the SDK or
 Targeting Pack installed. Note that assemblies will be resolved from the
 Global Assembly Cache (GAC) and will be used in place of reference 
assemblies. Therefore your assembly may not be correctly targeted for the 
framework you intend.

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Наше решение для сборки .NET Framework 4.7.2 не на Windows

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
  </PropertyGroup> 
  <PropertyGroup Condition="'$(OS)' == 'Windows_NT'">
      <TargetFramework>net472</TargetFramework>
  </PropertyGroup> 
  <ItemGroup Condition="'$(OS)' != 'Windows_NT'">
    <PackageReference Include="NuGet.Frameworks" Version="4.7.2" />
  </ItemGroup>  
</Project>
0 голосов
/ 11 мая 2018

Да. Можно получить пакет таргетинга с помощью Nuget. А затем добавьте переопределение пути фреймворка. Вот фрагмент кода, который можно добавить в любом месте к Microsoft.NET.Sdk .csproj / .fsproj, если ваша целевая среда - .NET v4.7

  <PropertyGroup Condition="'$(OS)' != 'Windows_NT' AND '$(TargetFramework)'== 'net47'">
    <!-- Make .NET 4.7 reference assemblies available even on Linux -->
    <FrameworkPathOverride>$(NuGetPackageRoot)microsoft.targetingpack.netframework.v4.7/1.0.1/lib/net47/</FrameworkPathOverride>
    <!-- Make sure the additional feed is searched. -->
    <RestoreAdditionalProjectSources>https://dotnet.myget.org/F/dotnet-core/api/v3/index.json</RestoreAdditionalProjectSources>
  </PropertyGroup>

  <ItemGroup Condition="'$(OS)' != 'Windows_NT' AND '$(TargetFramework)'== 'net47'">
      <!-- Make sure the reference assemblies are available -->
      <PackageReference Include="Microsoft.TargetingPack.NETFramework.v4.7"
                        Version="1.0.1" ExcludeAssets="All" PrivateAssets="All" />
  </ItemGroup>
...