创建多目标 nuget 包
create multi target nuget package
嗨,我想创建多目标 nuget 包。一切似乎都运行良好,除了当我创建 wpf NetCore3 应用程序并安装我的包时使用了 .NET Framework dll 而未使用 NetCore3 库
<files>
<file src="lib\netcore\Control.dll" target="lib\netcore" />
<file src="lib\net48\Control.dll" target="lib\net48" />
<file src="lib\net40\Control.dll" target="lib\net40" />
<file src="lib\net40\Microsoft.Windows.Shell.dll" target="lib\net40" />
</files>
这个lib\netcore正确吗?
netcore
is a Microsoft Store TFM.
对于您的 .NET Core 3 (netcoreapp3.0
) WPF 应用程序,您需要在 NuGet 包中使用 netstandard
或 netcoreapp
进行多目标。
例如:
<TargetFrameworks>netstandard2.0;net461</TargetFrameworks>
您应该在包中使用与 csproj
在 <TargetFramework>
元素中相同的 TFM。如果您的 csproj
有 <TargetFramework>netcore</TargetFramework>
,那么当然可以使用 lib/netcore/whatever.dll
。但是如果你的 csproj
有 <TargetFramework>netcoreapp3.0</TargetFramework
>,那么你应该使用 lib/netcoreapp3.0/whatever.dll
.
但是,SDK 样式项目是唯一适用于 .NET Core 3.0 的类型,支持多目标(将 <TargetFramework>
更改为 <TargetFrameworks>
,然后使用分号分隔列表 netcoreapp3.0;net48;net40
), 并且 NuGet 的打包目标知道如何自动打包这些项目。因此,无需自己创建 nuspec
,这样可以最大限度地降低犯此类错误的风险。
所以,就像 NuGet's docs on creating multi-targeting packages says, just use dotnet pack
to create your package, and let NuGet figure out what lib/*
folders to use. Avoid using nuspec files. Any other metadata you specify in the nuspec can specified via MSBuild properties in your csproj.
嗨,我想创建多目标 nuget 包。一切似乎都运行良好,除了当我创建 wpf NetCore3 应用程序并安装我的包时使用了 .NET Framework dll 而未使用 NetCore3 库
<files>
<file src="lib\netcore\Control.dll" target="lib\netcore" />
<file src="lib\net48\Control.dll" target="lib\net48" />
<file src="lib\net40\Control.dll" target="lib\net40" />
<file src="lib\net40\Microsoft.Windows.Shell.dll" target="lib\net40" />
</files>
这个lib\netcore正确吗?
netcore
is a Microsoft Store TFM.
对于您的 .NET Core 3 (netcoreapp3.0
) WPF 应用程序,您需要在 NuGet 包中使用 netstandard
或 netcoreapp
进行多目标。
例如:
<TargetFrameworks>netstandard2.0;net461</TargetFrameworks>
您应该在包中使用与 csproj
在 <TargetFramework>
元素中相同的 TFM。如果您的 csproj
有 <TargetFramework>netcore</TargetFramework>
,那么当然可以使用 lib/netcore/whatever.dll
。但是如果你的 csproj
有 <TargetFramework>netcoreapp3.0</TargetFramework
>,那么你应该使用 lib/netcoreapp3.0/whatever.dll
.
但是,SDK 样式项目是唯一适用于 .NET Core 3.0 的类型,支持多目标(将 <TargetFramework>
更改为 <TargetFrameworks>
,然后使用分号分隔列表 netcoreapp3.0;net48;net40
), 并且 NuGet 的打包目标知道如何自动打包这些项目。因此,无需自己创建 nuspec
,这样可以最大限度地降低犯此类错误的风险。
所以,就像 NuGet's docs on creating multi-targeting packages says, just use dotnet pack
to create your package, and let NuGet figure out what lib/*
folders to use. Avoid using nuspec files. Any other metadata you specify in the nuspec can specified via MSBuild properties in your csproj.