我在虚拟机中作为Hudson Slave工作。在虚拟机中,我添加要使用的MSBuild的路径:
%SystemRoot%Microsoft.NETFrameworkv4.0.30319;
我还添加了NUnit的路径:
C:Program FilesNUnit 2.5.7binnet-2.0;
因此,我可以在VM中运行NUnit和MSBuild命令行。
但当我的Hudson Job构建我的解决方案时,我遇到了这个错误:
C:WINDOWSMicrosoft.NETFrameworkv3.5Microsoft.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>Dllnunit.framework.dll</HintPath>
</Reference>
问题不在于nunit-console.exe(或任何名称)。
问题是在项目文件中找不到nunit.framework.dll…作为引用(对于C#为.csproj)。
你的单元测试项目,你需要打开它,找到对nunit.framwork.dll的引用是如何/在哪里连接的。
发布.csproj
代码,如果这令人困惑。
编辑:
<HintPath>Dllnunit.framework.dll</HintPath>
问题是,您需要"下载"或复制、svn导出、svn签出或nuget该文件。并将其放在.csproj.的相对目录中
因为你已经指定了一个提示路径,它不会在下面的目录中找到:
C:Program Files (x86)NUnit 2.X.Ybinnunit.framework.dll
基本上,HintPath
说"我希望在这里找到这个文件",而您的MSBUILD错误说"我没有在HintPath
说的地方找到它。"
jenkins-slave.exe(或hudson slave)在您的VM节点上运行在哪个用户帐户下?
.NET dll的路径在windows注册表(HKEY_CURRENT_USERSOFTWAREMicrosoft.NETFrameworkVersionMinimumAssemblyFoldersExMyAssemblies]@="AssemblyLocation"
)中注册。
默认情况下,jenkins在NT AUTHORITYSYSTEM
帐户下运行jenkins slave服务(该帐户可能没有在您的系统上注册任何AssemblyLocations)。
我在jenkins->nodes->VM->config中填写了我的用户帐户登录(.csproj在该帐户下构建得像一个魅力)详细信息,并另外设置了Windows运行"jenkinsslave"服务的同一用户帐户(在VM的Windows服务->jekins slave->属性->登录->此帐户:…)
因此,它可以在.csproj中不指定提示路径的情况下工作,因为它是特定于机器的(我的构建在多台机器上运行)。
在我的案例中,问题出现在构建序列中。所需的库已配置为在失败的库之后生成。