我一直在努力(不是第一次)在我一直致力于的项目上建立持续集成。我们使用CruiseControl.NET,但这不是问题 - 大多数问题都与csproj + sln文件和Visual Studio有关。经过一番捣乱后,我设法解决了这些问题,但我想我会记录一些非常常见的问题。
启动并运行ccnet配置后,我遇到的第一个问题是编译错误:
errorCS0234: The type or namespace name 'Gui' does not exist in the namespace 'NUnit' (are you missing an assembly reference?)
在解决了另一个问题后,我得到了熟悉的(并且非常痛苦)64位与32位问题:
System.BadImageFormatException: Could not load file or assembly '....' or one of its dependencies. An attempt was made to load a program with an incorrect format.
答案 0 :(得分:0)
第一个问题是由我引用NUnit dll时由Visual Studio添加的“提示路径”引起的。这些路径与我本地计算机上的Nunit安装位置相关,并且服务器的结构不相同。
如果您查看Visual Studio中的属性,您将看不到任何提及这些提示路径。在文本编辑器中打开相关的csproj,你会看到如下所示:
<HintPath>..\..\..\..\Program Files (x86)\NUnit 2.5.7\bin\net-2.0\framework\nunit.framework.dll</HintPath>
并用以下内容替换它:
<HintPath>$(ProgramFiles)\NUnit 2.5.7\bin\net-2.0\framework\nunit.framework.dll</HintPath>
在巡航控制中,我正在构建解决方案文件,而不是直接指定要定位的平台。这导致了第二个问题。要解决此问题,您可以使用Visual Studio。打开解决方案,然后从顶部的栏中单击Build =&gt; Configuration Manager。在活动解决方案平台中,我只有'x86'。从下拉列表中选择“新建”并选择“AnyCpu”,然后选择从''复制设置,并勾选创建新项目平台。而已!单击确定,关闭配置管理器,然后执行ctrl + shift + S保存所有(包括csproj + sln)。