我有以下
的可移植类库MyProj.Backend.Contracts.csproj
project.json:
{
"supports": {
"net46.app": {},
"uwp.10.0.app": {},
"dnxcore50.app": {}
},
"dependencies": {
"Microsoft.NETCore": "5.0.0",
"Microsoft.NETCore.Portable.Compatibility": "1.0.0",
"NuSpec.ReferenceGenerator": "1.4.2"
},
"frameworks": {
"dotnet": {
"imports": "portable-net452+win81"
}
}
}
和nuspec:
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
<metadata>
<id>MyProj.Backend.Contracts</id>
<version>1.0.0</version>
<dependencies>
<group targetFramework="dotnet">
<dependency id="System.Resources.ResourceManager" version="4.0.0" />
<dependency id="System.Runtime" version="4.0.20" />
</group>
</metadata>
</package>
注意,我已经将NuSpec.ReferenceGenerator添加到我的项目中,将''添加到我的项目json中。
但是,我仍然无法打包我的PCL库:
nuget pack MyProj.Backend.Contracts.csproj
Attempting to build package from 'MyProj.Backend.Contracts.csproj'.
Packing files from 'C:\Projects\MyProj\Backend\Contracts\Dev\bin\Contracts'.
Using ''MyProj.Backend.Contracts.csproj.nuspec' for metadata.
Value cannot be null or an empty string.
Parameter name: profileValue
如何修改.nuspec以便我可以从我的PCL库项目创建包?
答案 0 :(得分:5)
这是新project.json和指定依赖项的问题。错误消息非常糟糕,但有一些关于如何在此处工作的指导:https://github.com/ericstj/NuGetDocs/blob/ericstj/nuget3samples/NuGet.Docs/Create/nuget3-packages-walkthrough.md
简短的回答似乎是使用Nuget包nuspec.referencegenerator为您正确填写nuspec文件。
仅添加以下评论;使用Nuget 3.3(没有经过3.4或更高的测试),混合csproj和project.json文件似乎不起作用(或者它只适用于一部分场景)。如果你想使用project.json,你似乎需要为代码文件使用新的json项目格式,反之亦然,恢复为标准的nuspec和csproj组合。