我试图在Jenkins中使用MVC4设置一个NDbUnit应用程序的自动测试。在我的本地机器上,我有对NDbUnit.core和NDbUnit.SqlClient的引用,我在解决方案资源管理器中添加了这些引用,方法是单击references文件夹,然后‘adding’,然后从磁盘中添加它们。他们很有魅力。
但是,当我将解决方案提交到触发Jenkins构建服务器上自动构建的存储库时,构建失败。这两个文件的错误消息如下所示:
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,以便他们在任何地方都能工作。
发布于 2013-12-04 06:38:10
通常,您需要做两件事来确保程序集可用:
tf add Foo.*,它将跳过DLL,因此需要显式地执行tf add Foo.dll。)手动执行此操作的替代方法是使用包管理器(如努基特 )。安装Nuget包时,它将在项目文件中为该引用配置HintPath。您还可以将其配置为在构建时安装必要的软件包 (如果它们还不可用),这会增加一点编译时间,以换取不必签入DLL文件。
然而,这两个文件在“引用”文件夹中,它们只是不能工作(与其他文件不同,它们旁边有一个感叹号符号)。
“引用”文件夹实际上不是一个文件夹,而是项目引用的所有程序集的列表。该信息是从项目文件中找到的,因此无论这些文件在本地是否存在,它们都会显示出来。感叹号表示文件丢失(或由于其他原因无法解析,但从您的错误消息中它们可能丢失)。
https://stackoverflow.com/questions/20358016
复制相似问题