相关疑难解决方法(0)

如何在不安装IDE的情况下在构建服务器上安装VS2017版本的msbuild?

从历史上看,这已经使用Microsoft Build Tools完成.但似乎构建工具可能不适用于2015年之后的版本.替换似乎是Visual Studio构建工具,它似乎还没有真正的主页.

我下载了VS2017 Professional安装程序,然后转到Individual Components选项卡.然后,摘要告诉我Visual Studio核心编辑器在那里,占用753MB.我不想要编辑.只是msbuild.没有办法取消选择编辑器.

有没有办法安装最新版本的msbuild而不安装Visual Studio IDE?

msbuild build-tools build-server visual-studio-2017

193
推荐指数
1
解决办法
13万
查看次数

FxCop:异步方法的抑制消息

我正在使用FxCopCmd工具进行静态代码分析.由于我们已经拥有庞大的代码库,因此我们使用FxCop附带的baseline.exe工具为现有问题奠定了基础.

我观察到如果我向我的C#类添加一个新方法,那么GlobalSuppression.cs文件中的一些抑制消息就会停止工作,而我得到的问题是我没有触及的代码.

例:

namespace ConsoleApplication1
{
    class Program
    {
        public async Task<string> method1()
        {
            string a = "";
            a.Equals("abc", StringComparison.InvariantCultureIgnoreCase);
            return a;
        }

        static void Main(string[] args)
        {

        }        
    }
}
Run Code Online (Sandbox Code Playgroud)

这会引发以下错误:

CA1031:Microsoft.Design:修改'Program.d__0.MoveNext()'以捕获比'Exception'更具体的异常或重新抛出异常

为了抑制'CA1309 UseOrdinalStringComparison'问题,我在GlobalSuppression.cs文件中添加了以下抑制消息

[module:SuppressMessage("Microsoft.Globalization","CA1309:UseOrdinalStringComparison",Scope ="member",Target ="ConsoleApplication1.Program.d__0.MoveNext()",MessageId ="System.String.Equals(System.String, System.StringComparison)",Justification =""))]

但是如果我在类中再添加一个方法,那么这个抑制消息就会停止工作.这是因为method1是异步的,所以在编译的代码中创建了一个新类(参考这个)(<method1>d__0在第一种情况下).但是当我在method1之前添加另一个方法时,则会在编译代码中创建新类<method1>d__1.因此,不应用抑制消息,并且FxCop再次开始在代码中显示错误.

有没有办法永久抑制异步方法的FxCop错误?

.net c# fxcop fxcopcmd async-await

6
推荐指数
1
解决办法
395
查看次数

FxCop间接引用System.Core版本2.0.5.0

我有一个使用Autofac和WebAPI集成的项目

我们在我们的解决方案上运行FxCop,在打开autofac时,我得到以下结果:

找不到以下间接引用的程序集.分析不需要此装配,但没有它,分析结果可能不完整.这个汇编由Autofac.dll引用

System.Core,Version = 2.0.5.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e,Retargetable = Yes

这会导致CI服务器出现以下错误:

FxCop返回码(516):PROJECT_LOAD_ERROR ASSEMBLY_REFERENCES_ERROR

有没有办法告诉FxCop忽略这个?

fxcop autofac

5
推荐指数
1
解决办法
4073
查看次数

FxCop Phoenix分析引擎出错

所以我试图运行一系列在RuleSet中定义的规则.RuleSet文件实际上是使用Sonarqube生成的 - 我已经选择了绝对的所有规则,包括FxCop,ReSharper和StyleCop规则.我正在开这样的FxCop:

C:/FxCop/FxCopCmd.exe /file:C:\TestProject\bin\TestProject.dll /ruleset:=C:\TestProject\testproject.ruleset /out:C:\TestProject\fxcop-report.xml /outxsl:none /forceoutput /searchgac /aspnet
Run Code Online (Sandbox Code Playgroud)

它正确启动,但我收到以下消息:

初始化Introspection引擎...
分析...
初始化Phoenix引擎......
分析...
分析完成.
*1总分析引擎异常.

XML输出包含以下内容:

<Exception Keyword="CA0001" Kind="Engine">
    <Type>Phx.FatalError</Type>
    <ExceptionMessage>Exception of type 'Phx.FatalError' was thrown.</ExceptionMessage>
    <StackTrace>   at Phx.FatalError.Dispatch()
        at Phx.Logging.Diagnostics.DiagnosticMessage.LogMessage(Severity severity, DiagnosticInfo diagnosticInfo, SourceContext sourceContext, String descriptionString)
        at Phx.PE.PEUtilities.UserError(String infoMessage)
        at Phx.Pdb.ReaderImplementation.Open(Boolean loadTypeOnly)
        at Phx.PEModuleUnit.LoadPdb()
        at Phx.PE.ReaderPhase.CheckSymbolicInformation()
        at Phx.PEModuleUnit.LoadGlobalSymbols()
        at Phx.PEModuleUnit.LoadEncodedIRUnitList()
        at Phx.PEModuleUnit.GetEnumerableContributionUnit(ContributionUnitEnumerationKind contributionUnitEnumerationKind)
        at Phx.PEModuleUnit.GetEnumerableContributionUnit()
        at Microsoft.FxCop.Engines.Phoenix.PreScanPass.GetFunctionUnits(PEModuleUnit peModuleUnit)
        at Microsoft.FxCop.Engines.Phoenix.PreScanPass.Execute(ModuleUnit moduleUnit)
        at Phx.Passes.Pass.DoPass(ModuleUnit moduleUnit)
        at Phx.Passes.PassList.DoPassList(ModuleUnit moduleUnit)
        at Microsoft.FxCop.Engines.Phoenix.PhoenixAnalysisEngine.Host.ExecutePasses(PEModuleUnit peModuleUnit)
        at Microsoft.FxCop.Engines.Phoenix.PhoenixAnalysisEngine.AnalyzeInternal()
        at Microsoft.FxCop.Engines.Phoenix.PhoenixAnalysisEngine.Analyze()
        at …
Run Code Online (Sandbox Code Playgroud)

code-analysis fxcop static-code-analysis

5
推荐指数
2
解决办法
1595
查看次数

如何在 TeamCity 中运行 VS 2015 代码分析?

我已经在 VS 2015 中对我的所有解决方案项目设置了代码分析,并且运行良好。在其中一个项目中,有 .ruleset 文件,所有其他项目都引用该文件作为其代码分析的规则集。现在我希望在 TeamCity 上运行相同的代码分析,TeamCity 在没有安装 VS 的情况下在 Windows Server 2012 R2 上运行。

我已经尝试/p:RunCodeAnalysis=True作为这里建议的 MSBuild 步骤的命令行参数。但是这个选项显然被忽略了,因为构建日志没有说明运行代码分析的任何内容。我没有设置 FxCop 构建步骤,因为它需要指向 .dll 文件,但我希望代码分析实际分析我的解决方案中的代码,而不是 IL。

这里提出的解决方案是唯一可能的吗?对我来说,它看起来有点像一个容易出错的 hack。

msbuild teamcity code-analysis

4
推荐指数
1
解决办法
1981
查看次数