【发布时间】:2019-08-12 09:37:26
【问题描述】:
我正在尝试制作针对多个框架的 nuget 包。但它不起作用。 csproj 文件:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<OutputType>Library</OutputType>
<TargetFrameworks>net452;netstandard2.0</TargetFrameworks>
<NuGetPackageImportStamp />
</PropertyGroup>
运行命令:
C:\Repos\Random\TestStuff\.nuget\nuget pack "C:\Repos\Random\TestStuff\TestPackaging\TestPackaging.csproj"
它给了我错误:
错误 NU5012:找不到“bin\Debug\TestPackaging\bin\Debug\”。确保项目已构建。
如果我将配置更改为:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<OutputType>Library</OutputType>
<TargetFramework>netstandard2.0</TargetFramework>
<NuGetPackageImportStamp />
</PropertyGroup>
</Project>
一切正常。我错过了什么?更改运行它的位置没有区别。
编辑: 运行命令
C:\Repos\Random\TestStuff\.nuget\nuget pack "C:\Repos\Random\TestStuff\TestPackaging\TestPackaging.csproj" -build
给出不同的错误:
Build succeeded.
0 Warning(s)
0 Error(s)
Time Elapsed 00:00:00.50
Packing files from
'C:\Repos\Random\TestStuff\TestPackaging\bin\Debug\TestPackaging\bin\Debug'.
Could not find a part of the path
'C:\Repos\Random\TestStuff\TestPackaging\bin\Debug\TestPackaging\bin\Debug'.
与 nuspec 文件相同
【问题讨论】:
-
我不认为 net4.5 实现了 .net 标准 2。(docs.microsoft.com/en-us/dotnet/standard/net-standard)。您还使用调试配置打包它。所以它会在nuget中收集调试的东西。你确定要这样做吗?
-
包与 4.5.2 和标准 2.0 兼容,因此将其构建到这两件事中应该不是问题。我不想在 4.5.2 中使用这里的网络标准
-
您是否尝试过使用构建? nuget 包“project.csproj”-build
-
嗨!扔我两分钱:如果项目中没有任何 .NetFramework 特定代码,只需定位 .netstandard20 ,只要在消费项目中使用包引用就可以了
-
我要解决的主要问题是我们的核心库有一些我们想在任何地方使用的 C# 类。但是该库的整个使用者集范围从 4.5.2 到 .NET Core。并且有一些泛型代码在 2.0 标准以下不受支持。所以我不能同时将它升级到 4.5.2,我不能让它成为网络标准 1.3。如果我以它们为目标,则输出都会吐出两个我可以添加到 nuget 的 DLL。我不明白如何用 nuget 打包它们。我试过用 MSBuild 做,效果很好。
标签: msbuild nuget .net-standard