다음을 통해 공유


C++/WinRT 구성 요소에서 C# 프로젝션 생성, .NET 앱용 NuGet으로 배포

이 항목에서는 C++/WinRT Windows 런타임 구성 요소에서 C# .NET 프로젝션(또는 interop) 어셈블리를 생성하고, 이를 .NET 애플리케이션용 NuGet 패키지로 배포하기 위해 C#/WinRT을 사용하는 방법에 대해 안내합니다.

.NET 6 이상에서는 WinMD(Windows 메타데이터) 파일의 사용이 더 이상 지원되지 않습니다 (WinRT에 대한 기본 제공 지원이 .NET에서 제거되었습니다, 참조: ). 대신 C#/WinRT 도구를 사용하여 WinMD 파일에 대한 프로젝션 어셈블리를 생성한 다음, .NET 애플리케이션에서 WinRT 구성 요소를 사용할 수 있습니다. 프로젝션 어셈블리를 interop 어셈블리라고도합니다. 이 설명에서는 다음을 수행하는 방법을 보여 줍니다.

  • C#/WinRT 패키지 을 사용하여 C++/WinRT 구성 요소에서 C# 프로젝션을 생성합니다.
  • 프로젝션 어셈블리와 함께 구성 요소를 NuGet 패키지로 배포합니다.
  • .NET 콘솔 애플리케이션에서 NuGet 패키지를 사용합니다.

필수 조건

이 안내서와 해당 샘플에는 다음 도구와 구성 요소가 필요합니다.

Visual Studio 2019에만 . Visual Studio에서 C++/WinRT 프로젝트 템플릿을 제공하는 C++/WinRT VSIX 확장. 프로젝트 템플릿은 Visual Studio 2022에 기본 제공됩니다.

이 연습에서는 Visual Studio 2022 및 .NET 6을 사용합니다.

중요합니다

GitHub의 C#/WinRT 프로젝션 샘플에서 이 주제와 관련된 샘플 코드를 다운로드하거나 복제해야 합니다. CsWinRT을 방문하여 녹색 코드 버튼을 클릭해 git clone URL을 가져옵니다. 샘플을 위해 반드시 README.md 파일을 읽어야 합니다.

간단한 C++/WinRT Windows 런타임 구성 요소 만들기

이 가이드를 따르려면, 먼저 C# 프로젝션 어셈블리를 생성할 C++/WinRT Windows 런타임 구성 요소(WRC)가 있어야만 합니다.

이 설명서에서는 이미 다운로드하거나 복제한 GitHub의 C#/WinRT 프로젝션 샘플에서 SimpleMathComponent WRC를 사용합니다. SimpleMathComponentWindows 런타임 구성 요소(C++/WinRT) Visual Studio 프로젝트 템플릿(Visual Studio 2022와 함께 제공되거나 C++/WinRT VSIX 확장과 함께 제공)에서 생성되었습니다.

Visual Studio에서 SimpleMathComponent 프로젝트를 열려면 리포지토리의 다운로드 또는 복제에서 찾을 수 있는 \CsWinRT\src\Samples\NetProjectionSample\CppWinRTComponentProjectionSample.sln 파일을 엽니다.

이 프로젝트의 코드는 아래 헤더 파일에 표시된 기본 수학 연산에 대한 기능을 제공합니다.

// SimpleMath.h
...
namespace winrt::SimpleMathComponent::implementation
{
    struct SimpleMath: SimpleMathT<SimpleMath>
    {
        SimpleMath() = default;
        double add(double firstNumber, double secondNumber);
        double subtract(double firstNumber, double secondNumber);
        double multiply(double firstNumber, double secondNumber);
        double divide(double firstNumber, double secondNumber);
    };
}

Windows 데스크톱 호환 속성이 으로 설정되어 있는지 SimpleMathComponent C++/WinRT Windows 런타임 구성 요소 프로젝트에 대해 확인할 수 있습니다. 이렇게 하려면 SimpleMathComponent대한 프로젝트 속성에서 구성 속성>일반>프로젝트 기본값아래에 있는 Windows 데스크톱 호환 속성을 로 설정하십시오. .NET 데스크톱 앱을 사용할 때 올바른 런타임 바이너리가 로드되도록 보장합니다.

Desktop 호환 속성 페이지

C++/WinRT 구성 요소를 만들고 WinMD 파일을 생성하는 방법에 대한 자세한 단계는 C++/WinRT사용하여 Windows 런타임 구성 요소 참조하세요.

비고

구성 요소에서 IInspectable::GetRuntimeClassName 구현하는 경우 유효한 WinRT 클래스 이름을 반환하지 . C#/WinRT는 interop에 클래스 이름 문자열을 사용하므로, 잘못된 런타임 클래스 이름의 경우 InvalidCastException이 발생할 것입니다.

구성 요소 솔루션에 프로젝션 프로젝트 추가

먼저 CppWinRTComponentProjectionSample 솔루션이 Visual Studio에서 열려 있는 상태에서 해당 솔루션에서 SimpleMathProjection 프로젝트를 제거합니다. 그런 다음 파일 시스템에서 SimpleMathProjection 폴더를 삭제하거나 원하는 경우 이름을 바꿉니다. 이 연습을 단계별로 수행할 수 있도록 이러한 단계가 필요합니다.

  1. 솔루션에 새 C# 라이브러리 프로젝트를 추가합니다.

    1. 솔루션 탐색기솔루션 노드를 마우스 오른쪽 단추로 클릭하고 >새 프로젝트추가를 클릭합니다.
    2. 새 프로젝트 추가 대화 상자의 검색 상자에 클래스 라이브러리 입력합니다. 언어 목록에서 C# 선택한 다음 플랫폼 목록에서 windows 선택합니다. 이름에 접두사나 접미사가 없는 클래스 라이브러리로 불리는 C# 프로젝트 템플릿을 선택하고 다음을클릭합니다.
    3. 새 프로젝트의 이름을 SimpleMathProjection으로 지정하세요. 위치는 이미 \CsWinRT\src\Samples\NetProjectionSample 폴더가 있는 것과 동일한 폴더로 설정되어 있어야 합니다. 하지만 이를 확인하십시오. 그런 후 Next 를 클릭합니다.
    4. 추가 정보 페이지에서 .NET 6.0(장기 지원)을 선택한 다음, 만들기을 선택합니다.
  2. 프로젝트에서 스텁 Class1.cs 파일을 삭제합니다.

  3. 아래 단계를 사용하여 C#/WinRT NuGet 패키지설치합니다.

    1. 솔루션 탐색기에서 SimpleMathProjection 프로젝트를 마우스 오른쪽 버튼으로 클릭한 후, NuGet 패키지 관리를 선택합니다.
    2. 찾아보기 탭에서 Microsoft.Windows.CsWinRT를 검색 상자에 입력하거나 붙여넣고, 검색 결과에서 최신 버전 항목을 선택한 다음 설치를 클릭하여 패키지를 SimpleMathProjection 프로젝트에 설치합니다.
  4. SimpleMathProjectionSimpleMathComponent 프로젝트 참조를 추가합니다. 솔루션 탐색기에서 SimpleMathProjection 프로젝트 노드 아래의 종속성 노드를 마우스 오른쪽 단추로 클릭하고, 프로젝트 참조 추가를 선택한 다음, SimpleMathComponent 프로젝트를 선택하고 >확인을 클릭합니다.

아직 프로젝트를 빌드하지 마세요. 이후 단계에서 이 작업을 수행할 예정입니다.

지금까지 솔루션 탐색기은 이와 유사할 것입니다(버전 번호는 다를 수 있습니다).

솔루션 탐색기 은 프로젝션 프로젝트 종속성을 보여 준다.

소스에서 프로젝트 빌드

C#/WinRT 프로젝션 샘플 CppWinRTComponentProjectionSample 솔루션(GitHub에서 다운로드하거나 복제했으며 현재 열려 있음)의 경우 빌드 출력 위치는 Directory.Build.props 파일로 구성되어 원본빌드합니다. 즉, 빌드 출력의 파일이 원본 폴더 외부에서 생성됩니다. C#/WinRT 도구를 사용할 때 원본에서 빌드하는 것이 좋습니다. 이렇게 하면 C# 컴파일러가 프로젝트 루트 디렉터리 아래에 있는 모든 *.cs 파일을 실수로 선택할 수 없으므로 중복 형식 오류가 발생할 수 있습니다(예: 여러 구성 및/또는 플랫폼에 대해 컴파일하는 경우).

CppWinRTComponentProjectionSample 솔루션에 대해 이미 구성되어 있지만, 아래 단계에 따라 직접 구성해 보며 연습해 보세요.

원본에서 빌드하도록 솔루션을 구성하려면 다음을 수행합니다.

  1. CppWinRTComponentProjectionSample 솔루션이 열려 있는 상태에서 솔루션 노드를 마우스 오른쪽 단추로 클릭하고 >새 항목추가를 선택합니다. XML 파일 항목을 선택하고 이름을 Directory.Build.props로 지정하며, .xml 확장명을 사용하지 않습니다. 기존 파일을 덮어쓰려면 클릭합니다.

  2. Directory.Build.props 내용을 아래 구성으로 바꿉니다.

    <Project>
      <PropertyGroup>
        <BuildOutDir>$([MSBuild]::NormalizeDirectory('$(SolutionDir)', '_build', '$(Platform)', '$(Configuration)'))</BuildOutDir>
        <OutDir>$([MSBuild]::NormalizeDirectory('$(BuildOutDir)', '$(MSBuildProjectName)', 'bin'))</OutDir>
        <IntDir>$([MSBuild]::NormalizeDirectory('$(BuildOutDir)', '$(MSBuildProjectName)', 'obj'))</IntDir>
      </PropertyGroup>
    </Project>
    
  3. Directory.Build.props 파일을 저장하고 닫습니다.

C#/WinRT를 실행하도록 프로젝트 파일 편집

cswinrt.exe 도구를 호출하여 프로젝션 어셈블리를 생성하려면 먼저 프로젝트 파일을 편집하여 몇 가지 프로젝트 속성을 지정해야 합니다.

  1. 솔루션 탐색기SimpleMathProjection 노드를 두 번 클릭하여 편집기에서 프로젝트 파일을 엽니다.

  2. 특정 Windows SDK 버전을 대상으로 지정하도록 TargetFramework 요소를 업데이트합니다. 이렇게 하면 interop 및 프로젝션 지원에 필요한 어셈블리 종속성이 추가됩니다. 이 샘플은 net6.0-windows10.0.19041.0(Windows 10 버전 2004라고도 함)Windows SDK 버전을 대상으로 합니다. 모든 앱 아키텍처에서 결과 프로젝션 어셈블리를 참조할 수 있도록 Platform 요소를 AnyCPU로 설정합니다. 참조 애플리케이션이 이전 Windows SDK 버전을 지원하도록 허용하려면 TargetPlatformMinimumVersion 속성을 설정할 수도 있습니다.

    <PropertyGroup>
      <TargetFramework>net8.0-windows10.0.19041.0</TargetFramework>
      <!-- Set Platform to AnyCPU to allow consumption of the projection assembly from any architecture. -->
      <Platform>AnyCPU</Platform>
    </PropertyGroup>
    

    비고

    이 연습 및 관련 샘플 코드의 경우 솔루션은 x64릴리스위해 빌드됩니다. SimpleMathProjection 프로젝트는 모든 솔루션 아키텍처 구성에 대해 AnyCPU용으로 빌드되도록 구성됩니다.

  3. 여러 C#/WinRT 속성을 설정하는 두 번째 PropertyGroup 요소(첫 번째 요소 바로 뒤)를 추가합니다.

    <PropertyGroup>
      <CsWinRTIncludes>SimpleMathComponent</CsWinRTIncludes>
      <CsWinRTGeneratedFilesDir>$(OutDir)</CsWinRTGeneratedFilesDir>
    </PropertyGroup>
    

    다음은 이 예제의 설정에 대한 몇 가지 세부 정보입니다.

    • CsWinRTIncludes 속성은 프로젝트할 네임스페이스를 지정합니다.
    • CsWinRTGeneratedFilesDir 속성은 프로젝션 소스 파일이 생성되는 출력 디렉터리를 설정합니다. 이 속성은 위의 섹션에서 Directory.Build.props에 정의된 설정됩니다.
  4. SimpleMathProjection.csproj 파일을 저장하고 닫고 필요한 경우 프로젝트 다시 로드할 클릭합니다.

프로젝션을 사용하여 NuGet 패키지 만들기

.NET 애플리케이션 개발자를 위한 프로젝션 어셈블리를 배포하려면 몇 가지 추가 프로젝트 속성을 추가하여 솔루션을 빌드할 때 NuGet 패키지를 자동으로 만들 수 있습니다. .NET 대상의 경우 NuGet 패키지에는 구성 요소의 프로젝션 어셈블리와 구현 어셈블리가 포함되어야 합니다.

  1. 아래 단계를 사용하여 .nuspec 프로젝트에 NuGet 사양() 파일을 추가합니다.

    1. 솔루션 탐색기SimpleMathProjection 노드를 마우스 오른쪽 단추로 클릭하고 새 폴더추가를 선택하고 폴더 이름을 nuget.
    2. nuget 폴더를 마우스 오른쪽 단추로 클릭하고 추가>새 항목을 선택하고 XML 파일을 선택한 다음 이름을 SimpleMathProjection.nuspec로 지정하십시오.
  2. 솔루션 탐색기SimpleMathProjection 노드를 두 번 클릭하여 편집기에서 프로젝트 파일을 엽니다. 현재 열려 있는 SimpleMathProjection.csproj(두 개의 기존 PropertyGroup 요소 바로 뒤)에 다음 속성 그룹을 추가하여 패키지를 자동으로 생성합니다. 이러한 속성은 NuspecFile과 NuGet 패키지를 생성할 디렉터리를 지정합니다.

    <PropertyGroup>
      <GeneratedNugetDir>.\nuget\</GeneratedNugetDir>
      <NuspecFile>$(GeneratedNugetDir)SimpleMathProjection.nuspec</NuspecFile>
      <OutputPath>$(GeneratedNugetDir)</OutputPath>
      <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
    </PropertyGroup>
    

    비고

    패키지를 별도로 생성하려는 경우 명령줄에서 nuget.exe 도구를 실행하도록 선택할 수도 있습니다. NuGet 패키지를 만드는 방법에 대한 자세한 내용은 nuget.exe CLI사용하여 패키지 만들기를 참조하세요.

  3. SimpleMathProjection.nuspec 파일을 열어 패키지 만들기 속성을 편집하고 다음 코드를 붙여넣습니다. 아래 코드 조각은 여러 대상 프레임워크에 SimpleMathComponent 배포하기 위한 예제 NuGet 사양입니다. 대상 에 대해 SimpleMathProjection.dll프로젝션 어셈블리가 lib\net6.0-windows10.0.19041.0\SimpleMathProjection.dll 대신 지정됩니다. 이 동작은 .NET 6 이상에서 새로 사용되며 C#/WinRT에서 사용하도록 설정됩니다. SimpleMathComponent.dll구현 어셈블리도 배포해야 하며 런타임에 로드됩니다.

    <?xml version="1.0" encoding="utf-8"?>
    <package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
      <metadata>
        <id>SimpleMathComponent</id>
        <version>0.1.0-prerelease</version>
        <authors>Contoso Math Inc.</authors>
        <description>A simple component with basic math operations</description>
        <dependencies>
          <group targetFramework="net6.0-windows10.0.19041.0" />
          <group targetFramework=".NETCoreApp3.0" />
          <group targetFramework="UAP10.0" />
          <group targetFramework=".NETFramework4.6" />
        </dependencies>
      </metadata>
      <files>
        <!--Support .NET 6, .NET Core 3, UAP, .NET Framework 4.6, C++ -->
        <!--Architecture-neutral assemblies-->
        <file src="..\..\_build\AnyCPU\Release\SimpleMathProjection\bin\SimpleMathProjection.dll" target="lib\net6.0-windows10.0.19041.0\SimpleMathProjection.dll" />
        <file src="..\..\_build\x64\Release\SimpleMathComponent\bin\SimpleMathComponent\SimpleMathComponent.winmd" target="lib\netcoreapp3.0\SimpleMathComponent.winmd" />
        <file src="..\..\_build\x64\Release\SimpleMathComponent\bin\SimpleMathComponent\SimpleMathComponent.winmd" target="lib\uap10.0\SimpleMathComponent.winmd" />
        <file src="..\..\_build\x64\Release\SimpleMathComponent\bin\SimpleMathComponent\SimpleMathComponent.winmd" target="lib\net46\SimpleMathComponent.winmd" />
        <!--Architecture-specific implementation DLLs should be copied into RID-relative folders-->
        <file src="..\..\_build\x64\Release\SimpleMathComponent\bin\SimpleMathComponent\SimpleMathComponent.dll" target="runtimes\win10-x64\native\SimpleMathComponent.dll" />
        <!--To support x86 and Arm64, build SimpleMathComponent for those other architectures and uncomment the entries below.-->
        <!--<file src="..\..\_build\Win32\Release\SimpleMathComponent\bin\SimpleMathComponent\SimpleMathComponent.dll" target="runtimes\win10-x86\native\SimpleMathComponent.dll" />-->
        <!--<file src="..\..\_build\arm64\Release\SimpleMathComponent\bin\SimpleMathComponent\SimpleMathComponent.dll" target="runtimes\win10-arm64\native\SimpleMathComponent.dll" />-->
      </files>
    </package>
    

    비고

    구성 요소의 구현 어셈블리인 SimpleMathComponent.dll아키텍처에 따라 다릅니다. 다른 플랫폼(예: x86 또는 Arm64)을 지원하는 경우 먼저 원하는 플랫폼에 대한 SimpleMathComponent 빌드하고 이러한 어셈블리 파일을 적절한 RID 상대 폴더추가해야 합니다. 프로젝션 어셈블리 SimpleMathProjection.dll SimpleMathComponent.winmd 구성 요소는 모두 아키텍처 중립적입니다.

  4. 방금 편집한 파일을 저장하고 닫습니다.

프로젝션 및 NuGet 패키지를 생성하는 솔루션 빌드

솔루션을 빌드하기 전에 Visual Studio의 Build>에서 Configuration Manager 설정을 확인해야 합니다. 이 연습에서는 구성릴리스로 설정하고 플랫폼을 솔루션에 대해 x64로 설정합니다.

이제 솔루션을 빌드할 수 있습니다. 솔루션 노드를 마우스 오른쪽 단추로 클릭하고 솔루션 빌드을 선택합니다. 그러면 먼저 SimpleMathComponent 프로젝트를 빌드한 다음 SimpleMathProjection 프로젝트를 빌드합니다. 구성 요소 WinMD 및 구현 어셈블리(SimpleMathComponent.winmdSimpleMathComponent.dll), 프로젝션 소스 파일 및 프로젝션 어셈블리(SimpleMathProjection.dll)는 모두 _build 출력 디렉터리 아래에 생성됩니다. 생성된 NuGet 패키지, SimpleMathComponent0.1.0-prerelease.nupkg를 \SimpleMathProjection\n\uget 폴더 에서 볼 수 있습니다.

중요합니다

위에서 언급한 파일이 생성되지 않은 경우 솔루션을 두 번째로 빌드합니다. 다시 빌드하기 전에 솔루션을 닫았다가 다시 열어야 할 수도 있습니다.

Visual Studio에 .nupkg이 표시되도록 설명된 대로 솔루션을 닫고 다시 열어야 할 수 있습니다. 또는 모든 파일 표시를 선택한 후 선택 취소하기만 하면 됩니다.

솔루션 탐색기가 프로젝션 생성을 보여 줌

C# .NET 6 콘솔 애플리케이션에서 NuGet 패키지 참조

.NET 프로젝트에서 SimpleMathComponent 사용하려면 이전 섹션에서 만든 SimpleMathComponent0.1.0-prerelease.nupkg NuGet 패키지에 대한 참조를 새 .NET 프로젝트에 추가하면 됩니다. 다음 단계에서는 별도의 솔루션에서 간단한 콘솔 앱을 만들어 이 작업을 수행하는 방법을 보여 줍니다.

  1. 아래 단계를 사용하여 C# 콘솔 앱 프로젝트를 포함하는 새 솔루션을 만듭니다(새 솔루션에서 이 프로젝트를 만들면 SimpleMathComponent NuGet 패키지를 독립적으로 복원할 수 있습니다).

    중요합니다

    폴더 내에 이 새 \CsWinRT\src\Samples\NetProjectionSample 프로젝트를 만들겠습니다. 해당 폴더는 다운로드하거나 복제한 C#/WinRT 프로젝션 샘플에 포함되어 있습니다.

    1. Visual Studio의 새 인스턴스에서 파일>>프로젝트선택합니다.
    2. 새 프로젝트 만들기 대화 상자에서 콘솔 앱 프로젝트 템플릿을 검색합니다. 단순히 콘솔 앱(접두사나 접미사 없음)호출되는 C# 프로젝트 템플릿을 선택하고 다음클릭합니다. Visual Studio 2019를 사용하는 경우, 프로젝트 템플릿은 콘솔 애플리케이션입니다.
    3. 새로운 프로젝트 이름을 SampleConsoleApp으로 지정하고, 위치를 \CsWinRT\src\Samples\NetProjectionSampleSimpleMathProjection 폴더가 있는 동일한 폴더로 설정한 뒤, 다음을 클릭합니다.
    4. 추가 정보 페이지에서 .NET 6.0(장기 지원)을 선택한 다음, 만들기을 선택합니다.
  2. 솔루션 탐색기SampleConsoleApp 노드를 두 번 클릭하여 SampleConsoleApp.csproj 프로젝트 파일을 열고 다음 목록에 표시된 것처럼 보이도록 TargetFrameworkPlatform 속성을 편집합니다. Platform 요소가 없으면 추가합니다.

    <PropertyGroup>
      <OutputType>Exe</OutputType>
      <TargetFramework>net6.0-windows10.0.19041.0</TargetFramework>
      <Platform>x64</Platform>
    </PropertyGroup>
    
  3. SampleConsoleApp.csproj 프로젝트 파일이 열려 있는 상태에서 SampleConsoleApp 프로젝트에 SimpleMathComponent NuGet 패키지에 대한 참조를 추가합니다. 프로젝트를 빌드할 때 SimpleMathComponent NuGet을 복원하려면 구성 요소 솔루션에서 RestoreSources 폴더의 경로와 함께 속성을 사용할 수 있습니다. 다음 구성을 복사하여 SampleConsoleApp.csproj 붙여넣습니다(Project 요소 내부).

    <PropertyGroup>
      <RestoreSources>
        https://api.nuget.org/v3/index.json;
        ../SimpleMathProjection/nuget
      </RestoreSources>
    </PropertyGroup>
    
    <ItemGroup>
      <PackageReference Include="SimpleMathComponent" Version="0.1.0-prerelease" />
    </ItemGroup>
    

    중요합니다

    위에 표시된 RestoreSources 패키지의 경로 위치는 ../SimpleMathProjection/nuget으로 설정되어 있습니다. 이 연습의 단계를 수행한 경우 해당 경로가 올바르므로 SimpleMathComponentSampleConsoleApp 프로젝트가 모두 동일한 폴더(이 경우 NetProjectionSample 폴더)에 있습니다. 다른 작업을 수행한 경우 그에 따라 해당 경로를 조정해야 합니다. 또는 로컬 NuGet 패키지 피드 솔루션에 추가할 있습니다.

  4. Program.cs 파일을 편집하여 SimpleMathComponent이 제공하는 기능을 사용합니다.

    var x = new SimpleMathComponent.SimpleMath();
    Console.WriteLine("Adding 5.5 + 6.5 ...");
    Console.WriteLine(x.add(5.5, 6.5).ToString());
    
  5. 방금 편집한 파일을 저장하고 닫고 콘솔 앱을 빌드하고 실행합니다. 아래 출력이 표시됩니다.

    콘솔 NET5 출력

알려진 문제

  • 프로젝션 프로젝트를 빌드할 때 다음과 같은 오류가 표시될 수 있습니다. 오류 MSB3271 빌드되는 프로젝트의 프로세서 아키텍처와 구현 파일 ".의 프로세서 아키텍처 "x86"이 일치하지 않습니다.\SimpleMathComponent.dll".. \SimpleMathComponent.winmd". 이 불일치로 인해 런타임 오류가 발생할 수 있습니다. 프로젝트와 구현 파일 간에 프로세서 아키텍처를 맞추거나 프로젝트의 대상 프로세서 아키텍처와 일치하는 프로세서 아키텍처가 있는 구현 파일을 사용하여 winmd 파일을 선택하려면 Configuration Manager를 통해 프로젝트의 대상 프로세서 아키텍처를 변경하는 것이 좋습니다. 이 오류를 해결하려면 C# 라이브러리 프로젝트 파일에 다음 속성을 추가합니다.
    <PropertyGroup>
        <!-- Workaround for MSB3271 error on processor architecture mismatch -->
        <ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>None</ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
    </PropertyGroup>
    

추가 고려 사항

이 항목에서 만드는 방법을 보여 준 C# 프로젝션(또는 interop) 어셈블리는 매우 간단합니다. 다른 구성 요소에 대한 종속성이 없습니다. 그러나 Windows 앱 SDK 형식에 대한 참조가 있는 C++/WinRT 구성 요소에 대한 C# 프로젝션을 생성하려면 프로젝션 프로젝트에서 Windows 앱 SDK NuGet 패키지에 대한 참조를 추가해야 합니다. 이러한 참조가 누락된 경우 "형식 <T> 찾을 수 없습니다."와 같은 오류가 표시됩니다.

이 항목에서 수행하는 또 다른 작업은 프로젝션을 NuGet 패키지로 배포하는 것입니다. 그 은 현재이 필요합니다.

리소스