ImageOptimizer - Visual Studio 확장 단계별 업데이트
이 가이드에서는 사례 연구로 이미지 최적화 프로그램 확장을 사용하여 Visual Studio 2019 지원을 유지하면서 Visual Studio 2022 지원을 추가하는 데 필요한 모든 단계를 보여줍니다.
이는 각 단계에 대한 git 커밋 링크가 포함된 철저한 가이드를 위한 것이지만 여기에서 완료된 PR을 볼 수 있습니다. https://github.com/madskristensen/ImageOptimizer/pull/46
.
또한 이 가이드의 끝에는 개의 추가 샘플도 있습니다.
1단계 - 프로젝트 현대화
먼저 프로젝트의 속성 페이지에서 VSIX 및 단위 테스트 프로젝트를 .NET 4.7.2로 범프합니다.
이미지 최적화 프로그램은 일부 이전 사용자 지정 14.* 및 15.* 패키지를 참조했으며, 대신 필요한 모든 참조를 통합하는 Microsoft.VisualStudio.Sdk
NuGet 패키지 설치합니다.
- <ItemGroup>
- <PackageReference Include="Madskristensen.VisualStudio.SDK">
- <Version>14.0.0-beta4</Version>
- </PackageReference>
- <PackageReference Include="Microsoft.VSSDK.BuildTools">
- <Version>15.8.3247</Version>
- <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
- <PrivateAssets>all</PrivateAssets>
- </PackageReference>
- </ItemGroup>
+ <ItemGroup>
+ <PackageReference Include="Microsoft.VisualStudio.SDK">
+ <Version>16.9.31025.194</Version>
+ </PackageReference>
+ </ItemGroup>
프로젝트 빌드가 성공하면 몇 가지 스레딩 경고가 표시됩니다.
ctrl
클릭하고 .
intellisense를 사용하여 누락된 스레드 전환 선을 추가하여 이러한 경고를 해결합니다.
2단계 - 소스 코드를 공유 프로젝트로 리팩터링
Visual Studio 2022를 지원하려면 Visual Studio 2019와 Visual Studio 2022 VSIX 프로젝트 간에 공유될 확장의 소스 코드를 포함하는 새 공유 프로젝트를 추가해야 합니다.
솔루션에 새 공유 프로젝트 추가
추가
VSIX 프로젝트에 공유 프로젝트에 대한 참조를 추가합니다.
소스 코드 파일(cs, xaml, resx)을 새로운 공유 프로젝트 으로 이동하되, 다음에 대해서는을 제외하십시오.
source.extension.vsixmanifest
- 확장 메타데이터 파일(아이콘, 라이선스, 릴리스 정보 등)
- VSCT 파일
- 연결된 파일
- VSIX에 포함해야 하는 외부 도구 또는 라이브러리
이동
이제 모든 메타데이터, VSCT 파일, 연결된 파일 및 외부 도구/라이브러리를 공유 위치로 이동하고 VSIX 프로젝트에 연결된 항목으로 다시 추가합니다. 을 제거하지
source.extension.vsixmanifest
마십시오.git commit d5e36b2 - 외부 도구/라이브러리 추가
- 이 프로젝트의 경우 확장 아이콘, VSCT 파일 및 외부 도구를 새 폴더
ImageOptimizer\Resources
이동해야 합니다. 공유 폴더에 복사하고 VSIX 프로젝트에서 제거합니다. - 다시 연결된 항목으로 추가하고 항목이 이미 연결된 항목인 경우 그대로 유지할 수 있습니다(예: 라이선스).
- 각 속성을 선택하고 속성 도구 창을 확인하여 추가된 연결된 파일에서 빌드 작업 및 기타 속성이 올바르게 설정되었는지 확인합니다. 프로젝트의 경우 다음을 설정해야 했습니다.
icon.png
의 빌드 작업을Content
로 설정하고 VSIX에 포함을true
으로 표시했습니다.ImageOptimizer.vsct
빌드 작업을VSCTComplile
으로 설정하고, VSIX에false
포함하십시오.Resources\Tools
아래 파일의 모든 빌드 동작을Content
로 설정하고, VSIX에 포함하도록 표시하여true
하십시오.연결된 파일 추가
또한
ImageOptimizer.cs
ImageOptimizer.vsct
종속성이므로 csproj 파일에 이 종속성을 수동으로 추가해야 합니다.- <Content Include="..\SharedFiles\ImageOptimizer.vsct"> - <Link>ImageOptimizer.vsct</Link> - </Content> - <Compile Include="..\SharedFiles\ImageOptimizer.cs"> - <Link>ImageOptimizer.cs</Link> - </Compile> + <VSCTCompile Include="..\SharedFiles\ImageOptimizer.vsct"> + <ResourceName>Menus.ctmenu</ResourceName> + <Generator>VsctGenerator</Generator> + <LastGenOutput>..\SharedFiles\ImageOptimizer.cs</LastGenOutput> + </VSCTCompile> + <Compile Include="..\SharedFiles\ImageOptimizer.cs"> + <AutoGen>True</AutoGen> + <DesignTime>True</DesignTime> + <DependentUpon>..\SharedFiles\ImageOptimizer.vsct</DependentUpon> + </Compile>
속성 도구 창에서 특정 빌드 작업을 설정할 수 없는 경우 위에서 수행한 대로 csproj를 수동으로 수정하고 필요에 따라 빌드 작업을 설정할 수 있습니다.
- 이 프로젝트의 경우 확장 아이콘, VSCT 파일 및 외부 도구를 새 폴더
프로젝트를 빌드하여 변경 내용의 유효성을 검사하고 오류/문제를 해결합니다. 질문과 대답 섹션에서 일반적인 문제를 확인합니다.
3단계 - Visual Studio 2022 VSIX 프로젝트 추가
를 참조하여 Visual Studio 2022 대상을 추가하세요.
솔루션에 새 VSIX 프로젝트를 추가합니다.
source.extension.vsixmanifest.
제외하고 새 프로젝트에서 추가 소스 코드를 제거합니다.만들기
공유 프로젝트에 대한 참조를 추가합니다.
Visual Studio 2019 VSIX 프로젝트에서 연결된 파일을 추가하고 해당 "빌드 작업" 및 "VSIX에 포함" 속성이 일치하는지 확인합니다. 또한
source.extension.vsixmanifest
파일을 복사하여 나중에 Visual Studio 2022를 지원하도록 수정할 예정입니다.연결된 파일 추가
빌드를 시도하면
System.Windows.Forms
대한 참조가 누락된 것으로 표시됩니다. Visual Studio 2022 프로젝트에 추가하고 다시 빌드하기만 하면 됩니다.+ <Reference Include="System.Windows.Forms" />
Microsoft.VisualStudio.SDK
및Microsoft.VSSDK.BuildTools
패키지 참조를 Visual Studio 2022 버전으로 업그레이드하십시오.메모
이 가이드를 만들 때 사용할 수 있는 최신 버전입니다. 사용 가능한 최신 버전을 가져오는 것이 좋습니다.
-<PackageReference Include="Microsoft.VisualStudio.SDK" Version="16.0.206" /> +<PackageReference Include="Microsoft.VisualStudio.SDK" Version="17.0.0-preview-1-31216-1036" /> -<PackageReference Include="Microsoft.VSSDK.BuildTools" Version="16.10.32" /> +<PackageReference Include="Microsoft.VSSDK.BuildTools" Version="17.0.63-Visual Studio 2022-g3f11f5ab" />
대상 Visual Studio 2022를 반영하도록
source.extension.vsixmanifest
파일을 편집합니다.Visual Studio 2022를 반영하도록
<InstallationTarget>
태그를 설정하고 amd64 페이로드를 나타냅니다.<InstallationTarget Id="Microsoft.VisualStudio.Community" Version="[17.0,18.0)"> <ProductArchitecture>amd64</ProductArchitecture> </InstallationTarget>
Visual Studio 2022 이상만 포함하도록 필수 구성 요소를 수정합니다.
- <Prerequisite Id="Microsoft.VisualStudio.Component.CoreEditor" Version="[15.0,)" DisplayName="Visual Studio core editor" /> + <Prerequisite Id="Microsoft.VisualStudio.Component.CoreEditor" Version="[17.0,)" DisplayName="Visual Studio core editor" />
그리고 우리는 끝났어!
이를 통해 빌드는 이제 Visual Studio 2019 및 Visual Studio 2022 VSIX를 모두 생성합니다.
기타 샘플
-
ProPower 도구
- PeekF1
- 선택한 클래스/객체에 대한 도움말 정보를 참조하여 웹 브라우저를 엿볼 수 있습니다.
- FixMixedTabs (혼합된 탭 수정)
- 문서를 스캔하고 탭을 공백으로 바꾸거나 그 반대로 바꿉니다.
- PeekF1
다음 단계
이 시작-완료 가이드읽어 확장을 업데이트할 준비를 합니다.