在 nuspec 文件中定位多个 .NET Framework 版本
Targeting multiple .NET Framework versions in a nuspec file
我有一个包含多个项目的 Visual Studio 解决方案。我想支持的每个版本的 .NET Framework(+ .NET Core)都有一个 csproj,我想保持这种状态。它们都各自生成一个 DLL。所有 DLL 的名称都相同,但略有不同。
我最近开始使用 nuspec 文件和命令 nuget pack
从这些 DLL 中生成 NuGet 包。到目前为止,我已经为每个 DLL 生成了一个 NuGet 包。
是否可以生成一个包含所有 DLL 的单个 NuGet 程序包,并且当用户安装该程序包时安装正确的 DLL?
我在我的 nuspec 文件中尝试了以下内容:
<?xml version="1.0" encoding="utf-8"?>
<package >
<metadata>
...
<dependencies>
<group targetFramework=".NETCoreApp3.1" />
<group targetFramework=".NETFramework4.0" />
</dependencies>
</metadata>
<files>
<file src="bin\Company.Product.dll" target="lib\net40" />
<file src="..\CompanyProductCore\bin\Company.Product.dll" target="lib\netcoreapp3.1" />
</files>
</package>
当我查看生成的 NuGet 包时,lib 文件夹中有两个预期的子文件夹,它们每个都包含一个看起来正确的 DLL。
但是,当我测试包并尝试将其安装在另一个 Visual Studio 解决方案中的 .NET Core 应用程序项目中时,我收到警告:
Package X was restored using '.NETFramework,Version=v4.6.1...4.6.2...4.7...4.7.1...4.7.2...4.8 instead of the project target framework '.NetCoreApp,Version=3.1'. This package may not be fully compatible with your project.
这是我单独打包时没有出现的东西。因此它似乎没有检测到给定的 .NET Core 特定 DLL。
我想做的事情是否可行,如果可行,怎么做?
您的目标框架应该是 net40
和 netcoreapp3.1
。
<dependencies>
<group targetFramework="netcoreapp3.1" />
<group targetFramework="net40" />
</dependencies>
我有一个包含多个项目的 Visual Studio 解决方案。我想支持的每个版本的 .NET Framework(+ .NET Core)都有一个 csproj,我想保持这种状态。它们都各自生成一个 DLL。所有 DLL 的名称都相同,但略有不同。
我最近开始使用 nuspec 文件和命令 nuget pack
从这些 DLL 中生成 NuGet 包。到目前为止,我已经为每个 DLL 生成了一个 NuGet 包。
是否可以生成一个包含所有 DLL 的单个 NuGet 程序包,并且当用户安装该程序包时安装正确的 DLL?
我在我的 nuspec 文件中尝试了以下内容:
<?xml version="1.0" encoding="utf-8"?>
<package >
<metadata>
...
<dependencies>
<group targetFramework=".NETCoreApp3.1" />
<group targetFramework=".NETFramework4.0" />
</dependencies>
</metadata>
<files>
<file src="bin\Company.Product.dll" target="lib\net40" />
<file src="..\CompanyProductCore\bin\Company.Product.dll" target="lib\netcoreapp3.1" />
</files>
</package>
当我查看生成的 NuGet 包时,lib 文件夹中有两个预期的子文件夹,它们每个都包含一个看起来正确的 DLL。
但是,当我测试包并尝试将其安装在另一个 Visual Studio 解决方案中的 .NET Core 应用程序项目中时,我收到警告:
Package X was restored using '.NETFramework,Version=v4.6.1...4.6.2...4.7...4.7.1...4.7.2...4.8 instead of the project target framework '.NetCoreApp,Version=3.1'. This package may not be fully compatible with your project.
这是我单独打包时没有出现的东西。因此它似乎没有检测到给定的 .NET Core 特定 DLL。
我想做的事情是否可行,如果可行,怎么做?
您的目标框架应该是 net40
和 netcoreapp3.1
。
<dependencies>
<group targetFramework="netcoreapp3.1" />
<group targetFramework="net40" />
</dependencies>