【发布时间】:2021-06-27 21:52:44
【问题描述】:
我第一次尝试从 Visual Studio 2017 类库创建 Nuget 包。它是一个 .NET Framework 4.6.2 项目。 类库正在引用解决方案资源管理器下的引用部分中的其他一些 nuget 包、dll、exe。
以下是我查看一些 youtube 视频和 Microsoft 文档后采取的步骤:
右键单击项目并选择属性。 构建选项,将配置设置为发布。已保存和关闭的项目属性。 打开 csproj 文件并将配置更改为发布
<Configuration Condition=" '$(Configuration)' == '' ">Release</Configuration>
现在以发布模式构建项目。我可以在
下看到dllMyProject\bin\Release and also under MyProject\bin\Debug
然后我使用
创建规范文件nuget 规范 打开它并进行适当的更改,然后
nuget 包 MyProject.nuspec
我收到了许多警告,例如 Debug 和 Release 目录:
WARNING: NU5100: The assembly 'bin\Debug\Encryption.dll' is not inside the 'lib' folder and hence it won't be added as a reference when the package is installed into a project. Move it into the 'lib' folder if it needs to be referenced.
虽然类库(我正在创建 Nuget)有一个 packages.config 并且有引用:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Encryption" version="1.1.0" targetFramework="net462" />
...
...
...
<package id="TeraData" version="16.20.8" targetFramework="net462" />
</packages>
由于收到警告,我尝试在 nuspec 文件中输入依赖项信息。这是我的 nuspec 文件的样子
<?xml version="1.0" encoding="utf-8"?>
<package >
<metadata>
<id>ProjectTitle</id>
<version>1.0.0</version>
<title>ProjectTitle</title>
<authors>auther name</authors>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>desc of package</description>
<releaseNotes>release notes text</releaseNotes>
<copyright>Copyright info</copyright>
<tags>some tages</tags>
<dependencies>
<dependency id="Encryption" version="1.1.0" />
...
<dependency id="TeraData" version="16.20.8" />
</dependencies>
</metadata>
</package>
但仍然收到相同的警告。如果可以,请提供一个示例 nuspec 中的依赖信息应该是什么样子,那真的很有帮助! 如有遗漏请指教!
【问题讨论】:
-
由于错误是关于 nuspec 文件的,因此无法弄清楚你到底错在哪里......通常我们比用户更信任编译器......除非帖子中有明确的证据(如@ 987654321@)...
-
我用 nupec 文件中的代码更新了帖子。请让我知道其他信息会有所帮助
-
有些帖子引用了 lib 文件夹。例如。 stackoverflow.com/questions/8764236/…。我在我的项目目录中没有看到 lib 文件夹。它应该在哪里? lib\net40 - 这是否意味着 .Net 框架 4.0
-
“bin\Debug\Encryption.dll”是您的 DLL 还是“加密”NuGet 的一部分?我认为在这种情况下您实际上不需要做任何事情,因为依赖项应该正确安装该 NuGet...您是否尝试将新创建的 NuGet 添加到空白项目以查看 实际 发生了什么?我非常担心从我的 Bin 文件夹中包含外部 DLL(因为它可能会导致 nuget 用户在路上不匹配)。
-
是的,我确实尝试从另一个项目中引用它,这就是我得到的:无法安装包 MyNugetPackage 1.0.0'。您正在尝试将此包安装到以“.NETFramework,Version=v4.6.2”为目标的项目中,但该包不包含任何与该框架兼容的程序集引用或内容文件。如需更多信息,请联系包作者。
标签: c# visual-studio dependencies nuget nuspec