我已经创建了我想通过nuget发布的库Staty供其他开发人员使用。
我明确地将其创建为可移植类库,并将自己局限于非常基本的编程结构。现在我想以某种方式发布它,其他人可以轻松使用我的库。我将我的库设置为具有以下目标的PCL,在我看来这是最宽容的平台组合:
完成第一个版本后,我想使用Nuget GUI发布它,并使用以下nuget配置文件。我将release-build文件包含在portable-net4-sl4-wp7-win8
文件夹下的包中(我也试过了portable-net45-sl5-wp8-win8
,没有任何影响)
为了验证我的库是真正可移植的,我想将它包含在另一个PCL项目中,但不幸的是我只收到以下错误:无法安装包'Staty 1.0.0'。您正在尝试将此软件包安装到以“.NETPortable,Version = v4.5,Profile = Profile259”为目标的项目中,但该软件包不包含任何与该框架兼容的程序集引用或内容文件。
将它添加到常规控制台应用程序时,一切正常。当通过引用直接将dll包含到同一个PCL项目中时,它也可以正常工作 - >添加参考... - >浏览。
那么我发布包的方式有什么问题?
答案 0 :(得分:2)
在更改目标对话框中,您指定 .NET Framework 4.5 ,而在 NuGet 设置中,您的目标是 net4 。此外,在 NuGet 设置中,您还定位 sl4 和 wp7 。总而言之,这意味着当 NuGet Manager 尝试将 NuGet 包中的库路径与您的其他PCL项目的配置文件相匹配时,它必然会失败到期不兼容。
请查看this列表,确定您应将 lib 子文件夹放在 Staty.dll PCL中。 (该列表未明确指定 ASP.NET Core 和 Xamarin 目标,它们通常是隐含的。)从列表中可以看到您选择的目标平台更改目标对话框与配置文件259 相匹配,此配置文件的 NuGet 目标最好为 portable-net45 + netcore45 + wpa81 + WP8 强>
(如果您在文本编辑器中打开 Staty.csproj 项目文件,则可以确认<targetFrameworkProfile>
确实是Profile259
。)
请将 NuGet 文件中的 lib 子文件夹名称更改为 portable-net45 + netcore45 + wpa81 + wp8 ,您应该然后能够从你的其他PCL项目引用 Staty NuGet包,只要这个其他项目针对 Staty NuGet包的平台的相同或子集。定位。