目前,我有一个引用 StyleCop 的 .Net 标准项目。它构建为 NuGet 包,并包含 customruleset
和自定义props
文件。我希望道具文件根据引用我的 NuGet 包的项目的输出类型应用不同的规则集。
我想将此 NuGet 包添加到包含不同项目类型(例如类库或 Windows 窗体)的解决方案中。不同的项目类型需要不同的规则集。例如,我不想在 Windows 窗体应用程序上强制文档,但我想在类库项目中强制它。
我正在尝试使用Condition
s 来执行此操作,但始终使用默认的 StyleCop 规则集。
我也不知道调试项目和props
文件以确保包含规则集的方法。
这是我的props
文件。
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="16.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<CodeAnalysisRuleSetLocation Condition=" '$(NuGetPackageRoot)' != '' ">$(NuGetPackageRoot)\CustomStyleCop\1.0.0</CodeAnalysisRuleSetLocation>
<CodeAnalysisRuleSetLocation Condition=" '$(CodeAnalysisRuleSetLocation)' == '' and '$(SolutionDir)' != '' ">$(SolutionDir)\packages\CustomStyleCop.1.0.0</CodeAnalysisRuleSetLocation>
<CodeAnalysisRuleSetLocation Condition=" '$(CodeAnalysisRuleSetLocation)' == '' ">$([System.IO.Path]::GetDirectoryName($(MSBuildProjectDirectory)))\packages\CustomStyleCop.1.0.0</CodeAnalysisRuleSetLocation>
</PropertyGroup>
<PropertyGroup>
<CodeAnalysisRuleSet>
<CodeAnalysisRuleSet Condition=" '$(OutputType)' == 'Library' ">$(CodeAnalysisRuleSetLocation)\CustomStyleCopClassLibrary.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRuleSet Condition=" '$(OutputType)' == 'Exe' or '$(OutputType)' == 'WinExe' ">$(CodeAnalysisRuleSetLocation)\CustomStyleCopForms.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemGroup>
<AdditionalFiles Include="$(CodeAnalysisRuleSetLocation)\stylecop.json" Link="stylecop.json" />
</ItemGroup>
</Project>
还有我的nuspec
档案。
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>CustomStyleCop</id>
<title>CustomStyleCop</title>
<version>1.0.0</version>
<developmentDependency>true</developmentDependency>
<dependencies>
<dependency id="StyleCop.Analyzers" version="[1.1.1-rc.114]" />
</dependencies>
</metadata>
<files>
<file src="stylecop.json" target="" />
<file src="Rulesets\CustomStyleCopClassLibrary.ruleset" target="" />
<file src="Rulesets\CustomStyleCopForms.ruleset" target="" />
<file src="CustomStyleCop.props" target="build" />
</files>
</package>
这可能吗?或者我是否需要为每种项目类型使用不同的 NuGet 包?目前有没有办法调试 msbuild?(我知道它过去可用但已报废)