小编Jim*_*mmy的帖子

从NuGet包实现StyleCop MSBUILD

一个快速的前兆,说我已经在论坛和网络上进行了一般性的搜索,我已经尝试了在这个论坛和其他地方发现的大量建议,但无济于事.

我遇到的问题是我的公司正在寻求使用StyleCop,ReSharper和JSLint(等等)等工具实现内部自动化同行评审(在某种程度上).

我们正在使用针对我们内部NuGet包存储库(feed)的自定义NuGet包,以便我们的开发人员获得一个管理版本的工具(即,在它被审核和发布之前,它们无法下载最新的StyleCop)我们的自定义规则(StyleCop设置文件).因为我们想在构建时使用StyleCop MSBUILD任务来突出显示错误,所以StyleCop的程序集必须准确,因此我们排除了C:\ Program Files \版本的安装,转而支持NuGet版本.

我已经设法创建一个安装到项目(类库,网站等)的NuGet包,复制批准的StyleCop程序集(StyleCop.dll,StyleCop.CSharp.dll和StyleCop.CSharpRules.dll),Settings.StyleCop和StyleCop.Targets到包文件夹,并修改.csproj文件以包含以下节点(当然这只是一个片段):

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup Condition=" '$(Configuration)' != 'Debug' ">
        <StyleCopTreatErrorsAsWarnings>false</StyleCopTreatErrorsAsWarnings>
    </PropertyGroup>

    <Import Project="$(SolutionDir)\packages\NuGetPackageName.1.0.0\StyleCop.Targets" />
</Project>
Run Code Online (Sandbox Code Playgroud)

如果我将StyleCop安装为C:\ Program Files \并且在C:\ Program Files\MSBUILD中,则一切正常,但使用此方法时,StyleCop.Targets似乎无法正常工作.如果文件被删除并且它创建了一个StyleCop.Cache文件,它将被用作Visual Studio 2010引发错误.StyleCop.Targets文件已更改为指向NuGet包文件夹中的本地DLL,我尝试了几个不同的.Targets文件,包括标准的StyleCop文件(相对文件路径更改).即使我在本地覆盖MSBUILD属性,它也不起作用,例如OverrideSettingsFile.

StyleCop.Targets文件目前看起来像这样:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <!-- Specify where tasks are implemented. -->
    <UsingTask AssemblyFile="$(SolutionDir)\packages\NuGetPackageName.1.0.0\lib\net40\StyleCop.dll" TaskName="StyleCopTask"/>

    <PropertyGroup>
        <BuildDependsOn>$(BuildDependsOn);StyleCop</BuildDependsOn>
        <RebuildDependsOn>StyleCopForceFullAnalysis;$(RebuildDependsOn)</RebuildDependsOn>
    </PropertyGroup>

    <!-- Define StyleCopForceFullAnalysis property. -->
    <PropertyGroup Condition="('$(SourceAnalysisForceFullAnalysis)' != '') and ('$(StyleCopForceFullAnalysis)' == '')">
        <StyleCopForceFullAnalysis>$(SourceAnalysisForceFullAnalysis)</StyleCopForceFullAnalysis>
    </PropertyGroup>
    <PropertyGroup Condition="'$(StyleCopForceFullAnalysis)' == ''">
        <StyleCopForceFullAnalysis>false</StyleCopForceFullAnalysis>
    </PropertyGroup>

    <!-- Define StyleCopCacheResults property. -->
    <PropertyGroup Condition="('$(SourceAnalysisCacheResults)' …
Run Code Online (Sandbox Code Playgroud)

c# msbuild stylecop nuget

9
推荐指数
1
解决办法
7785
查看次数

标签 统计

c# ×1

msbuild ×1

nuget ×1

stylecop ×1