Hudson:警告MSB3245:无法找到程序集“nunit.framework”

时间:2013-12-06 15:26:49

标签: msbuild jenkins nunit hudson jobs

我作为哈德逊奴隶在虚拟机中工作。 在虚拟机中,我添加了我想要使用的MSBuild的路径:

%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\;

我还添加了NUnit的路径:

C:\Program Files\NUnit 2.5.7\bin\net-2.0;

因此,我可以在我的VM中运行NUnit和MSBuild命令行。

但是当我的Hudson Job构建我的解决方案时,我收到了这个错误:

C:\WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets : warning MSB3245: Could not resolve this reference. Could not locate the assembly "nunit.framework".

我应该在我的VM或Hudson中修复什么? 非常感谢你!

修改

这里有关文件* .csproj如何引用dll:

<Reference Include="nunit.framework, Version=2.5.7.10213, Culture=neutral, PublicKeyToken=KKKKKKKKKK processorArchitecture=KKK">
    <SpecificVersion>False</SpecificVersion>
    <HintPath>Dll\nunit.framework.dll</HintPath>
</Reference>

3 个答案:

答案 0 :(得分:13)

问题不在于nunit-console.exe(或任何名称)。

问题是你找不到nunit.framework.dll ...作为项目文件中的引用(C#的.csproj)。

您的单元测试项目,您需要打开它并查找nunit.framwork.dll的引用的连接方式/位置。

如果令人困惑,请发布.csproj代码。

编辑:

<HintPath>Dll\nunit.framework.dll</HintPath>

问题是您需要“下载”或复制或svn-export或svn-checkout或nuget-get该文件。 并将其放在 relative 目录中.csproj。

因为你已经指定了一个HintPath,所以它找不到下面目录中的那个:

C:\Program Files (x86)\NUnit 2.X.Y\bin\nunit.framework.dll

基本上,HintPath说“我希望在这里找到此文件”,并且您的MSBUILD错误显示“我没有找到它HintPath所说的位置。”

答案 1 :(得分:1)

在哪个用户帐户下,jenkins-slave.exe(或hudson slave)在您的VM节点上运行?

.NET dll的路径在Windows注册表(HKEY_CURRENT_USER\SOFTWARE\Microsoft\.NETFramework\VersionMinimum\AssemblyFoldersEx\MyAssemblies]@="AssemblyLocation")中注册。

默认情况下,jenkins在NT AUTHORITY\SYSTEM帐户下运行jenkins-slave服务(可能没有在您的系统上注册任何AssemblyLocations)。

我将我的用户帐户登录(在其下.csproj构建为魅力)详细信息填入jenkins - &gt;节点 - &gt; VM - &gt;配置并另外设置Windows运行“jenkins slave”服务的同一用户帐户(在VM的Windows服务 - &gt; jekins slave - &gt;属性 - &gt;登录 - &gt;此帐户:...)

所以它没有在.csproj中指定提示路径,因为它是特定于机器的(我的构建在多台机器上运行)。

答案 2 :(得分:0)

就我而言,问题在于构建顺序。 必需的库已配置为在失败的库之后构建。