首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在nuget中包含dll作为引用,当nuget添加到项目中时,dll也被复制为引用。

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

Stack Overflow用户
提问于 2020-09-23 18:44:43
回答 1查看 612关注 0票数 0

我们试图控制nugets的版本,方法是将它们托管在我们自己的Artifactory上,而不是在nuget.org上,同时尝试将多个nuget打包到一个中。

这方面的例子是Aspose

我想创建一个名为AsposeTools的新库,它有我们自己的助手函数。

AsposeTools参考文献:Aspose.CellsAspose.PDF.

当我在我的项目中安装AsposeTools时,我希望看到和Aspose.PDF,这样我就可以调用我的助手函数和实际的Aspose函数。但我希望Apose.Cells和Aspose.PDF由AsposeTools“安装”,而不是从我们的工件或nuget.org复制的依赖项。原因是,我们需要在工件和工具中维护单元格和pdf的版本。

如何从nuget内部判断是否存在依赖关系,而不是nuget源代码。

我尝试在AsposeTools中创建一个libs文件夹,并将额外的dll添加到该文件夹中,并将它们添加为引用。然后,我尝试了构建操作的所有不同选项,将复制设置为Output 设置为all。我所能得到的最好结果是,根据文件大小,AsposeTools包含了额外的dll,但实际上我无法在代码中重新定义它们,只有我的助手函数。Aspose.Cells和Aspose.PDF实际上没有放在项目引用中。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-24 09:57:28

如果我的评论是正确的,您可以将这些Apose.Cells.dllAspose.PDF.dll设置为程序集引用,这样它就不会从nuget.org中将它们作为nuget包安装。

备注:它将忽略nuget包的任何依赖项,如果需要,可以使用相同的方式自动添加它们。

( -->Properties ) 1)单击依赖项上的这些nuget包,然后将其Private Asserts设置为All

然后是,右键单击项目->卸载项目,然后单击重新加载项目以启用设置。

2)输入项目的xxx.csproj文件,然后添加以下内容:

代码语言:javascript
运行
复制
 <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)重新打包项目,在安装新版本时,首先应该删除C:\Users\xxx(current user)\.nuget\packages下的清理nuget缓存或缓存文件。

当您安装新的AsposeTools包时,它不会将其他两个包安装为来自nuget.org的nuget依赖项。它们仅被主项目引用为程序集引用,并复制到输出文件夹中。

ConsoleApp2是新的主项目,我已经将新版本的AsposeTools包安装到我的项目中。这就是效果:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64034408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档