首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何添加对依赖项的适当引用,使其在每个人的计算机(包括构建服务器)上工作?

如何添加对依赖项的适当引用,使其在每个人的计算机(包括构建服务器)上工作?
EN

Stack Overflow用户
提问于 2013-12-03 17:41:17
回答 1查看 5.1K关注 0票数 1

我试图在Jenkins中使用MVC4设置一个NDbUnit应用程序的自动测试。在我的本地机器上,我有对NDbUnit.coreNDbUnit.SqlClient的引用,我在解决方案资源管理器中添加了这些引用,方法是单击references文件夹,然后‘adding’,然后从磁盘中添加它们。他们很有魅力。

但是,当我将解决方案提交到触发Jenkins构建服务器上自动构建的存储库时,构建失败。这两个文件的错误消息如下所示:

代码语言:javascript
复制
c:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1605,5): warning MSB3245: 
Could not resolve this reference. Could not locate the assembly "NDbUnit.Core". Check to make 
sure the assembly exists on disk. If this reference is required by your code, you may get 
compilation errors. [C:\Program Files (x86)\Jenkins\jobs\Project\workspace\Project\Project.csproj]
      For SearchPath "{HintPathFromItem}".
      Considered "..\packages\NDbUnit_1.6.7.0\NDbUnit.Core.dll", but it didn't exist.

当我进行新的签出并尝试在我自己的机器上构建解决方案时,我会得到相同的消息,即引用无法被解析。然而,这两个文件在“引用”文件夹中,它们只是不能工作(与其他文件不同,它们旁边有一个感叹号符号)。只有当我从我自己的机器上引用它们时,它们才能再次工作。

这种疯狂让我在持续整合游戏中损失了很多分数。我希望有人能向我解释如何正确引用.dll,以便他们在任何地方都能工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-04 06:38:10

通常,您需要做两件事来确保程序集可用:

  1. 将二进制文件签入到源代码管理。一些源代码管理系统一开始可能会向后推,因为它们是二进制格式,但通常可以强制执行。(我知道,如果使用tf add Foo.*,它将跳过DLL,因此需要显式地执行tf add Foo.dll。)
  2. 确保从正确的相对路径引用DLL。这被指定为项目文件中的HintPath,例如 ../../relative/path/to/DllThatYouReference.dll

手动执行此操作的替代方法是使用包管理器(如努基特 )。安装Nuget包时,它将在项目文件中为该引用配置HintPath。您还可以将其配置为在构建时安装必要的软件包 (如果它们还不可用),这会增加一点编译时间,以换取不必签入DLL文件。

然而,这两个文件在“引用”文件夹中,它们只是不能工作(与其他文件不同,它们旁边有一个感叹号符号)。

“引用”文件夹实际上不是一个文件夹,而是项目引用的所有程序集的列表。该信息是从项目文件中找到的,因此无论这些文件在本地是否存在,它们都会显示出来。感叹号表示文件丢失(或由于其他原因无法解析,但从您的错误消息中它们可能丢失)。

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

https://stackoverflow.com/questions/20358016

复制
相关文章

相似问题

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