Mik*_*EEE 27 .net c# nuget visual-studio-2017 .net-standard
我终于安装了Visual Studio 2017.2并试图让我的第一个项目正常工作,但我遇到了一些麻烦,我希望在这里解决.
我有一个非常简单的.NET标准库,描述为以下项目文件:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard1.6</TargetFramework>
</PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
还有一个非常简单的.NET Framework控制台应用程序,它引用了上面的.NET标准库,并被描述为以下项目文件:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net45</TargetFramework>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\Common\Common.csproj" />
</ItemGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
当我构建我的控制台应用程序时,我收到以下构建错误:
C:\Program Files\dotnet\sdk\1.0.4\NuGet.targets(97,5): error : Project Common is not compatible with net45 (.NETFramework,Version=v4.5). Project Common supports: netstandard1.6 (.NETStandard,Version=v1.6)
我看到了这个问题,并尝试了那里提供的一些建议,但没有一个有效.所以,这似乎是一个不同的问题.请注意,这是在我的解决方案构建期间发生的,而不是以任何方式引用(显式)NuGet包.
最后,如果它有帮助,我有一个解决方案,在这里演示这个问题:https: //github.com/Mike-EEE/Stash/blob/master/VS2017.Multi/VS2017.dotNetFramework.sln
Mar*_*ich 31
.NET Framework 4.5仅支持使用面向.NET Standard 1.0或1.1的.net标准库.由于您的库以1.6为目标,因此工具在此处执行正确的操作并出错(因为您的库可能使用.NET Framework 4.5中不可用的API).如果您将库作为NuGet包发布并通过包引用将其使用,则包还原也会出错(包含错误,指出包不兼容).
由于有可用的预览工具("2.0")可以更改这些版本,因此对.NET Framework版本支持哪种.NET标准版本存在一些困惑.因此,文档中的".NET平台支持"表包含有关受支持版本的两行.但是,在您的情况下,两个版本都将.NET Framework 4.5限制为.NET Standard 1.1.
NETStandard.Library要使.net 框架项目与 .net 标准库兼容,您必须从 nuget获取。
现在我找不到任何官方资源来说明为什么这是必须的,但据我所知,NETStandard.Library有必要的链接来制作从 .NET Standard API 到 .NET Framework 的映射。
如果您想了解更多信息,我建议阅读NET Standard的官方文档。