无法使TeamCity FxCop Build Runner正常工作

3

有什么方法可以使这个错误消息消失吗?

无法运行进程 E:\Program Files\Microsoft FxCop 1.36\FxCop.exe\FxCopCmd.exe /forceoutput /gac /ignoregeneratedcode /f:\Sacog\bin\Debug\Sacog.dll /out:05A1B22A-DE6E-49ae-AA30-DC52A074EF22\fxcop-result.xml:找不到文件。

4个回答

6
我必须在buildAgent.properties文件中设置以下内容:
system.FxCopRoot=c:\\Program Files (x86)\\Microsoft FxCop 1.36
请确保对冒号和反斜杠进行转义。
然后,我需要从编译构建配置中创建一个artifact,其中包含我想让FxCop查看的程序集的bin文件夹。接下来,我需要在FxCop构建配置中创建一个artifact依赖项;否则,FxCop无法操作任何程序集。
这对我有用。

2

您是否在运行配置中设置了“FxCop安装根目录”?

如果是,请从末尾删除FxCop.exe。

如果没有,请在此处发布您的FxCop构建页面上“设置”选项卡中的内容。


关于NAnt/MSBuild集成,请参见http://www.jetbrains.net/confluence/display/TCD4/Build+Script+Interaction+with+TeamCity#BuildScriptInteractionwithTeamCity-ReportingFxCop - shalupov
1
谢谢@shalupov:在你指出这个错误之前,我没有注意到错误信息中的\FxCop.exe\FxCop.exe。 - Tr1stan

0

只需将FXCop路径添加到PATH环境变量中即可。

此外,NAnt contrib具有fxcop任务。像这样使用:

  <loadtasks>
    <fileset basedir="${environment::get-variable('NAntContribHome')}">
      <include name="NAnt.Contrib.Tasks.dll" />
    </fileset>
  </loadtasks>


  <target name="fxCop" depends="compile">
    <fxcop analysisReportFilename="fxCopResults.xml" failOnAnalysisError="false" >
      <targets>
        <includes name="BinaryToAnalyse.dll" />
      </targets>
      <rules>
        <includes name="C:\Program Files\Microsoft FxCop 1.36\Rules\*Rules.dll" />
      </rules>
    </fxcop>
  </target>

刚刚重新阅读了你的问题。你是使用内置的TC Runner还是通过NAnt调用? - MPritchard
目前我正在使用 TC Runner,但我愿意改变。我正在尝试提升MSBuild或NAnt的水平,以获得更长期的灵活性。 - KevDog

0

FxCop 正在尝试测试 BuildAgent 驱动器的根目录下的代码... 这个开关

/f:\Sacog\bin\Debug\Sacog.dll

正在尝试从该驱动器的根目录获取Sacog.dll。这可能来自于您在TeamCity中配置供FxCop分析的文件列表中。在“构建配置/步骤3:运行程序”配置屏幕上的“程序集”部分中删除文件名开头的\


尝试了您的建议,仍然没有成功。这是程序集部分中的内容:Sacog\bin\Debug\Sacog.dll - KevDog
我在这里试图寻找答案,但是路径中的空格可能会有问题吗? - KevDog

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接