我如何将 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 上来控制正在使用的 nugets 的版本,同时试图将多个 nugets 打包成一个。
例如 Aspose。
我想创建一个名为 AsposeTools 的新库,它有我们自己的辅助函数。
AsposeTools 参考:Aspose.Cells 和 Aspose.PDF。
当我在我的项目中安装 AsposeTools 时,我想看到 AsposeTools, Aspose.Cells 和 Aspose.PDF 这样我就可以调用来使用我的辅助函数和实际的 Aspose 函数。
但我希望 Apose.Cells 和 Aspose.PDF 由 AsposeTools[=44=“安装” ] 不是从我们的人工制品或 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
设置为 All
.
Then, right-click on the project-->Unload project 然后点击reload Project 启用设置。
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) 重新打包你的项目,当你安装新版本时,你应该先 clean nuget caches 或者只删除 C:\Users\xxx(current user)\.nuget\packages
下的缓存文件。
当您安装新的 AsposeTools 包时,它不会安装其他两个包作为来自 nuget.org
的 nuget 依赖项。它们仅作为 程序集引用 被主项目引用,并且也被复制到输出文件夹中。
ConsoleApp2 是新的主项目,我已经在我的项目中安装了新版本的 AsposeTools 包。这是效果:
我们试图通过将它们托管在我们自己的 Artifactory 而不是 nuget.org 上来控制正在使用的 nugets 的版本,同时试图将多个 nugets 打包成一个。
例如 Aspose。
我想创建一个名为 AsposeTools 的新库,它有我们自己的辅助函数。
AsposeTools 参考:Aspose.Cells 和 Aspose.PDF。
当我在我的项目中安装 AsposeTools 时,我想看到 AsposeTools, Aspose.Cells 和 Aspose.PDF 这样我就可以调用来使用我的辅助函数和实际的 Aspose 函数。 但我希望 Apose.Cells 和 Aspose.PDF 由 AsposeTools[=44=“安装” ] 不是从我们的人工制品或 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
设置为 All
.
Then, right-click on the project-->Unload project 然后点击reload Project 启用设置。
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) 重新打包你的项目,当你安装新版本时,你应该先 clean nuget caches 或者只删除 C:\Users\xxx(current user)\.nuget\packages
下的缓存文件。
当您安装新的 AsposeTools 包时,它不会安装其他两个包作为来自 nuget.org
的 nuget 依赖项。它们仅作为 程序集引用 被主项目引用,并且也被复制到输出文件夹中。
ConsoleApp2 是新的主项目,我已经在我的项目中安装了新版本的 AsposeTools 包。这是效果: