2017-12-19 1 views
0

사용자 정의 룰 세트 파일을 우리의 nuget 패키지로 사용하려고합니다. 나는 패키지 .props 파일의 빌드 폴더에 추가했습니다코드 분석이 (.props에서) nuget 패키지의 룰 세트와 작동하지 않습니다.

<Project> 
    <PropertyGroup> 
    <CodeAnalysisRuleSet> 
     $(MSBuildThisFileDirectory)..\My.Shared.ruleset 
    </CodeAnalysisRuleSet> 
    <RunCodeAnalysis>true</RunCodeAnalysis> 
    </PropertyGroup> 
</Project> 

규칙 설정 파일이 패키지 루트 폴더에, 경로는이 .props의 가져 오기 csproj 파일에 파일을 추가하는 것, 정확합니다.

<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <Import Project="..\packages\My.Shared.Rulesets.1.0.0.7118\build\My.Shared.Rulesets.props" Condition="Exists('..\packages\My.Shared.Rulesets.1.0.0.7118\build\My.Shared.Rulesets.props')" /> 
    <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> 
    ... 

그러나 Visual Studio에서 올바른 규칙 집합이 보이지 않습니다. References -> Analyzers에서 활성화 된 규칙 집합을 열면 다른 파일을 가리키고 있습니다 : MinimumRecommendedRules.ruleset 그리고이 파일의 규칙은 내 사용자 정의 규칙이 아닙니다.

  • 비주얼 스튜디오 Comunity 2017 버전 15.5.0
  • 4.6.1

답변

1

코드 분석 (.props에서) nuget 패키지에서 규칙 세트와 함께 작동하지 않는 프로젝트 대상 프레임 워크

패키지 폴더의 content 폴더에 규칙 집합 파일을 설정하여 VS/MSBuild에서이 파일을 프로젝트에 추가 한 다음 VS \ MSBu ild는 MinimumRecommendedRules.rulesetMy.Shared.ruleset.ruleset 파일로 변경할 수 있습니다.

예를 들어, NuGet 소스 폴더 구조는 ("My.Shared.ruleset"패키지의 ID입니다)과 같습니다

  • 빌드

    • My.Shared.ruleset. 소품
  • 내용

      My.Shared.ruleset.props의 내용은 다음과 같이됩니다
    • My.Shared.ruleset.ruleset

:

  • 열기 :

    <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
        <PropertyGroup> 
         <RunCodeAnalysis>true</RunCodeAnalysis> 
         <CodeAnalysisRuleSet>My.Shared.Rulesets.ruleset</CodeAnalysisRuleSet> 
        </PropertyGroup> 
    </Project> 
    

    단계 패키지를 nuget 만들 수 있습니다 NuGet Package Explorer, 새 패키지 선택, 편집 -> 편집 메타 데이터, ID를로 변경하십시오.-> 저장하십시오.

  • 콘텐츠 -> 추가 -> 내용 폴더 -> 추가 기존 파일 -> 당신의 My.Shared.Rulesets.ruleset

  • 콘텐츠 -> 추가 -> 폴더 -> 빌드 선택> 기존 파일 - 추가하여 My.Shared.ruleset.props 선택 -> 저장.

    enter image description here

그런 다음 테스트 프로젝트에이 패키지를 추가합니다

enter image description here

그런 다음 당신은 활성 규칙 집합 nuget 패키지의 하나에 변경되었습니다 찾을 수 있습니다. 코멘트

업데이트 : 우리는 각 프로젝트에 룰셋 파일을 복사하지 않도록 노력하고 있었다

. 개발자는 반드시 경로가 올바른지 당신이해야 그냥 .props 파일의 경로를 변경해야합니다, 당신은 각 프로젝트에 룰 파일을 복사하지 않으려면 변경 및 저장소

에 밀어 경향이 있지만 예를 들어 .props 파일에 있습니다. 로컬 경로에 .ruleset 파일을 설정하고 D:\ShareFolder\My.Shared.Rulesets.ruleset을 입력 한 다음 nuget 패키지에서 .ruleset을 이동하고 .props에서 경로를 D:\ShareFolder\My.Shared.Rulesets.ruleset으로 변경합니다. 이 도움이

enter image description here

희망.

+0

우리는 각 프로젝트에 룰셋 파일을 복사하는 것을 피하려고했습니다. 개발자는 그것을 변경하고 저장소로 이동하는 경향이 있습니다.) 적절한 위치에서 볼 수없는 Visual Studio 버그라고 생각합니다. 빌드가 올바른 규칙 집합을보고 있기 때문입니다. –

+0

@MateuszMoska, ruleset 파일을 각 프로젝트에 복사하지 않으려면 .props 파일에서 경로를 변경하기 만하면되지만 .props 파일에서 경로가 올바른지 확인해야합니다. 샘플 테스트에서는 내 편이 잘 작동합니다. 업데이트 된 답변을 자세히 확인할 수 있습니다. –

+0

@MateuszMoska,이 호에 대한 모든 업데이트가 있습니까? 문제를 해결 했습니까? 그렇지 않은 경우이 문제에 대한 최신 상태를 알려 주시기 바랍니다. –

관련 문제