【问题标题】:Hudson : warning MSB3245: Could not locate the assembly "nunit.framework"Hudson:警告 MSB3245:找不到程序集“nunit.framework”
【发布时间】:2013-12-24 00:33:49
【问题描述】:

我在虚拟机中作为 Hudson Slave 工作。 在虚拟机中,我添加了我要使用的 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>

【问题讨论】:

    标签: msbuild jenkins nunit hudson jobs


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      问题是您在项目文件(C# 的 .csproj)中找不到 nunit.framework.dll...作为参考。

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

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

      编辑:

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

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

      因为你已经指定了一个 HintPath,它不会在下面这个目录中找到那个:

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

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

      【讨论】:

      • 该项目的编码非常好。我通过Visual Studio 2008根据每个配置(AnyCPU,Win32,x64)以图形方式构建解决方案,并成功生成。但是当我从 Hudson 远程构建它时,它无法找到对该 dll 的引用
      • 发布您的 csproj 代码(在记事本中打开)。 .. 并发布具有 nunit 参考的部分。
      • 在没有提示路径的情况下无法正常工作我只是硬编码了默认的 nunit 安装路径:&lt;HintPath&gt;C:\Program Files (x86)\NUnit 2.6.3\bin\nunit.framework.dll&lt;/HintPath&gt;
      • 运行构建过程的身份......必须有权访问该目录。并且将运行构建过程的身份......授予“c:\程序文件\”(或类似的)权限不是最佳实践恕我直言。
      【解决方案3】:

      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)。

      我在 jenkins -> 节点 -> VM -> 配置中填写了我的用户帐户登录(.csproj 就像一个魅力一样构建)详细信息,并另外设置了 Windows 运行“jenkins slave”服务的相同用户帐户(在 VM 的 Windows 服务 -> jekins slave -> 属性 -> 登录 -> 此帐户:...)

      所以它可以在 .csproj 中不指定提示路径的情况下工作,因为它是特定于机器的(我的构建在多台机器上运行)。

      【讨论】:

        猜你喜欢
        • 2016-12-31
        • 1970-01-01
        • 2011-03-30
        • 1970-01-01
        • 1970-01-01
        • 2021-09-13
        • 2013-08-15
        • 2016-02-11
        • 1970-01-01
        相关资源
        最近更新 更多