繁体   English   中英

如何将 dll 作为引用包含在 nuget 中,当 nuget 添加到项目时,该引用也被复制为引用

[英]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.CellsAspose.PDF

当我在我的项目中安装AsposeTools时,我想看到AsposeToolsAspose.CellsAspose.PDF以便我可以调用以使用我的辅助函数和实际的 Aspose 函数。 但我希望Apose.CellsAspose.PDFAsposeTools “安装”,不是从我们的 artifactory 或 nuget.org 复制下来的依赖项。 原因是因为我们需要在我们的人工制品和工具中使用的东西中维护单元格和 pdf 的版本。

如何告诉依赖项从它存在的 nuget 中安装,而不是从 nuget 源中安装。

我尝试在AsposeTools 中创建一个 libs 文件夹,并将额外的 dll 添加到该文件夹​​中,并将它们添加为引用。 然后,我尝试了所有不同的构建操作选项,并将“复制到输出目录”设置为“始终”。 我能得到的最好结果是,从文件大小来看AsposeTools包含了额外的 dll,但我实际上无法在代码中引用它们,只有我的辅助函数。 Aspose.CellsAspose.PDF实际上并未放置在项目引用中

编辑:我目前使用 .csproj 来构建 nuget

如果我的评论的猜测是正确的,您可以将这些Apose.Cells.dllAspose.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM