[英]How do I include dll as reference in nuget that also gets copied as reference when nuget added to project
我们正在尝试通过将它们托管在我们自己的 Artifactory 而不是在nuget.org 上来控制正在使用的 nuget 版本,同时尝试将多个 nuget 打包成一个。
这方面的例子是Aspose 。
我想创建一个名为AsposeTools的新库,它具有我们自己的辅助函数。
AsposeTools参考: Aspose.Cells和Aspose.PDF 。
当我在我的项目中安装AsposeTools时,我想看到AsposeTools 、 Aspose.Cells和Aspose.PDF以便我可以调用以使用我的辅助函数和实际的 Aspose 函数。 但我希望Apose.Cells和Aspose.PDF由AsposeTools “安装”,而不是从我们的 artifactory 或 nuget.org 复制下来的依赖项。 原因是因为我们需要在我们的人工制品和工具中使用的东西中维护单元格和 pdf 的版本。
如何告诉依赖项从它存在的 nuget 中安装,而不是从 nuget 源中安装。
我尝试在AsposeTools 中创建一个 libs 文件夹,并将额外的 dll 添加到该文件夹中,并将它们添加为引用。 然后,我尝试了所有不同的构建操作选项,并将“复制到输出目录”设置为“始终”。 我能得到的最好结果是,从文件大小来看, AsposeTools包含了额外的 dll,但我实际上无法在代码中引用它们,只有我的辅助函数。 Aspose.Cells和Aspose.PDF实际上并未放置在项目引用中
编辑:我目前使用 .csproj 来构建 nuget
如果我的评论的猜测是正确的,您可以将这些Apose.Cells.dll
和Aspose.PDF.dll
设置为程序集引用,这样它就不会将它们安装为来自nuget.org
nuget 包。
注意:它会丢失 nuget 包的任何依赖项,如果需要,您可以使用相同的方式自动添加它们。
1)在Dependencies --> Properties上单击这些 nuget 包,然后将它们的Private Asserts
Asserts 设置为All
。
然后,右键单击项目-->卸载项目,然后单击重新加载项目以启用设置。
2)进入项目的xxx.csproj
文件,然后添加这些:
<PropertyGroup>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup>
<ItemGroup>
<None Include="$(OutputPath)Aspose.Cells.dll" Pack="true" PackagePath="lib\$(TargetFramework)"></None>
<None Include="$(OutputPath)Aspose.PDF.dll" Pack="true" PackagePath="lib\$(TargetFramework)"></None>
// you can add any dependency dlls of the output folder in this way as you want
</ItemGroup>
3)重新打包你的项目,当你安装新版本时,你应该首先清理 nuget 缓存或者只是删除C:\\Users\\xxx(current user)\\.nuget\\packages
下的缓存文件。
当您安装新的AsposeTools包时,它不会将其他两个包安装为来自nuget.org
nuget 依赖nuget.org
。 并且它们仅被主项目引用,仅作为程序集引用并复制到输出文件夹中。
ConsoleApp2是新的主项目,我已经在我的项目中安装了新版本的AsposeTools包。 这是效果:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.