我在IIS上本地运行私有Nuget服务器。 我正在创建包并使用nuget.exe通过commadline上传它们(稍后我必须将它放在构建服务器上,因此命令行)。但是我坚持一个问题。
我正在尝试声明依赖项。我在.csproj文件所在的文件夹中生成nuspec文件。然后我手动编辑nuspec文件,将其添加到元数据标签下:
<metadata>
<dependencies>
<group targetFramework=".NETFramework4.5">
<dependency id="DemoProject" version="2.0.0.0" />
</group>
</dependencies>
</metadata>
Nuget Server上存在DemoProject,版本2.0.0.0。 我正在创建包的项目,MyProj.csproj没有通过Visual Studio添加到它的DemoProject的引用。它只是在我想要创建依赖的打包时间。这听起来很奇怪,但需要进行初步验证。
然后我运行pack命令:
&#34; C:\的NuGet \ NuGet.exe&#34; pack MyProj.csproj -IncludeReferencedProjects -Prop Configuration = Release
然后我使用命令行将其推送到NuGet服务器。 当我通过命令行安装时,安装位置只有MyProj包。
当我使用Nuget Package Explorer并创建一个包时,我可以使用Package Dependency Editor来指定依赖项。它要求我本地Nuget Server的URL,然后添加依赖项。当我安装该包时,它的工作原理!
在这两种情况下,生成的nuspec文件似乎没有区别。 显然,Nuget Package Manager正在做一些我错过的事情。
任何提示?
更多细节:当我在软件包管理器控制台中创建一个lib文件夹并手动输入我的DLL时,lib-&gt; net45-&gt; MyProj.dll,然后当我安装这样创建的软件包时,&#34;不会& #34;安装依赖项。再次回到阅读文档。
答案 0 :(得分:0)
我知道这并没有直接回答你的问题,但我遇到了NuGet依赖的问题,我的解决方案可能会提供一个提示。
DLL#1没有NuGet依赖项。把它推到我的私人仓库。 DLL#2引用了DLL#1 NuGet包。把它推到我的私人仓库。
除了从应用程序项目进入&#34;管理NuGet包...&#34;之外的所有优秀和花花公子,在浏览选项卡上列出了DLL#2的NuGet包,但它没有显示依赖关系。我被迫安装DLL#1和DLL#2 nuget包。我希望安装DLL#2 nuget包并自动获取DLL#1。
我修复此问题的方法是从DLL#2解决方案中卸载所有NuGet包。 然后转到工具&gt;选项&gt; NuGet包管理器&gt;一般。然后将默认包管理格式设置为Packages.config,然后取消选中&#34;允许在第一个包安装时选择格式&#34;。
然后我安装了所有需要的NuGet包。现在,当我将其打包并将其推送到服务器时,它会在进入&#34;管理NuGet包时显示正确的依赖关系...&#34;。
nuget pack 没有看到依赖项,因为它在 \ packages文件夹中查找它们。该文件夹不存在,因为我使用PackageReference进行包管理。
切换到Packages.config以进行包管理后,所有工作都正常。
我知道我遇到的问题与您的问题不一样,但如果您没有使用Packages.config进行软件包管理,可能是相关的。
答案 1 :(得分:0)
迟到的回答,但这个nuspec的问题是<group targetFramework=".NETFramework4.5">
。我有信心&#34; .NETFramework4.5&#34;是一个无效的targetFramework。可用Target Frameworks is here的完整列表。
使用Dependency section时,您可能不需要使用组标记。遇到类似错误的任何用户都应该仔细阅读该部分。他们有正确使用的样本。