目标 .NET 4.x 和 .NET Standard 2.0
Target .NET 4.x and .NET Standard 2.0
去年我为 Network library 添加了 .NET Standard 2.0 支持。我确实通过创建第二个(.NET Standard)项目实现了这一点,基本上是复制粘贴源代码。经过一些调整,它已准备就绪。
但是由于我是按需添加功能,所以在两个项目中更改相同的东西确实很麻烦。如果只创建一个代码库并简单地更改编译目标,那就太好了。
预编译语句不是一个选项,因为 .NET 4.x 版本还包含一些 NuGet 包,这些包不适用于 .NET Standard。
我目前能想到的解决办法是,创建一个共享库,包括所有的跨项目类。或者有更流畅的解决方案吗?
使用建议的解决方案解决了问题。 .csproj 如下所示
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net46;netstandard2.0</TargetFrameworks>
</PropertyGroup>
<PropertyGroup>
<RestoreProjectStyle>PackageReference</RestoreProjectStyle>
</PropertyGroup>
<ItemGroup>
<Compile Remove="packages\**" />
<EmbeddedResource Remove="packages\**" />
<None Remove="packages\**" />
</ItemGroup>
<ItemGroup>
<!-- PackageReferences for all TargetFrameworks -->
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net46' ">
<!-- PackageReferences for net46 TargetFramework -->
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'netstandard2.0' ">
<!-- PackageReferences for standard2.0 TargetFramework -->
</ItemGroup>
</Project>
目前唯一的问题:我无法使用 NuGet 包管理器。我必须手动将每个条目添加到正确的 ItemGroup 中。
编辑:仅当两个 TargetFrameworks 都不支持包时才需要手动编辑。只需更改设置 -> NuGet-Paket-Manager -> 默认格式 -> PackageReference
您可以将现有项目的源文件作为 link 添加到另一个项目。
project a
somefile.cs
project b
右键单击项目 b,添加现有项目...导航到项目 a 中的 somefile.cs,然后添加
您可以从任一项目编辑文件...所以要小心。
去年我为 Network library 添加了 .NET Standard 2.0 支持。我确实通过创建第二个(.NET Standard)项目实现了这一点,基本上是复制粘贴源代码。经过一些调整,它已准备就绪。
但是由于我是按需添加功能,所以在两个项目中更改相同的东西确实很麻烦。如果只创建一个代码库并简单地更改编译目标,那就太好了。
预编译语句不是一个选项,因为 .NET 4.x 版本还包含一些 NuGet 包,这些包不适用于 .NET Standard。
我目前能想到的解决办法是,创建一个共享库,包括所有的跨项目类。或者有更流畅的解决方案吗?
使用建议的解决方案解决了问题。 .csproj 如下所示
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net46;netstandard2.0</TargetFrameworks>
</PropertyGroup>
<PropertyGroup>
<RestoreProjectStyle>PackageReference</RestoreProjectStyle>
</PropertyGroup>
<ItemGroup>
<Compile Remove="packages\**" />
<EmbeddedResource Remove="packages\**" />
<None Remove="packages\**" />
</ItemGroup>
<ItemGroup>
<!-- PackageReferences for all TargetFrameworks -->
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net46' ">
<!-- PackageReferences for net46 TargetFramework -->
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'netstandard2.0' ">
<!-- PackageReferences for standard2.0 TargetFramework -->
</ItemGroup>
</Project>
目前唯一的问题:我无法使用 NuGet 包管理器。我必须手动将每个条目添加到正确的 ItemGroup 中。
编辑:仅当两个 TargetFrameworks 都不支持包时才需要手动编辑。只需更改设置 -> NuGet-Paket-Manager -> 默认格式 -> PackageReference
您可以将现有项目的源文件作为 link 添加到另一个项目。
project a
somefile.cs
project b
右键单击项目 b,添加现有项目...导航到项目 a 中的 somefile.cs,然后添加
您可以从任一项目编辑文件...所以要小心。