【发布时间】:2021-08-01 15:16:07
【问题描述】:
是否可以告诉编译器不加载本地安装的 DLL 并仅使用已安装的 NuGet 包提供的引用?
在我们的开发人员机器上,安装了各种框架,但我们的 CI 环境中缺少这些框架。这通常会导致构建失败并且修复起来非常烦人。
例如,我的项目中的一个引用 Microsoft.Office.Interop.Word 在本地工作,因为我的机器上安装了办公套件。一旦我在 CI 中运行构建,构建就会失败,因为我们的代理上没有安装 office-suite。
更新
我的问题的根源如下。我有一些以前没有使用 NuGet-Packages 的旧软件。在本地,我可以毫无问题地构建这些项目。但是一旦我触发 CI 构建,构建就会失败,因为代理上没有安装一些引用。然后我必须搜索可以替换本地引用的 NuGet 包并将更改推送到我们的 git 存储库。
我想跳过这个耗时的更改引用的任务,然后推送并等待构建完成。如果可以选择告诉编译器不使用本地引用,我会在本地机器上遇到同样的错误。
【问题讨论】:
-
你能举个例子说明你所说的那种参考是失败的吗?通常,如果您想告诉编译器使用 nuget 包,只需在 csproj 中使用
<PackageReference>即可;如果您使用其他类型的参考:它们是什么? -
@MarcGravell 我添加了一个示例。这个问题大多只发生在我们产品组合中的旧应用程序中,因为新项目仅使用 NuGet 包构建
-
@mamen 将 Interop.Word 库导入 .csproj 文件的 xml 元素是什么样的?
-
根据规模,您可以删除对程序集的引用,然后安装 NuGet 包。
-
还有,为什么要一次性将它们全部替换为 NuGet 包。我知道这很痛苦,但这不是你以后需要再做的事情。
标签: c# visual-studio nuget roslyn