Aracılığıyla paylaş


C++/WinRT bileşeninden C# projeksiyonu oluşturma, .NET uygulamaları için NuGet olarak dağıtma

Bu konu başlığında C #/WinRT kullanarak C++/WinRT Windows Çalışma Zamanı bileşeninden C# .NET projeksiyonu (veya birlikte çalışma) derlemesi oluşturma ve bunu .NET uygulamaları için NuGet paketi olarak dağıtma adımlarını inceleyeceğiz.

.NET 6 ve sonraki sürümlerde Windows meta verileri (WinMD) dosyalarının kullanımı artık desteklenmiyor (bkz. WinRT için yerleşik destek .NET'ten kaldırılmıştır). Bunun yerine, C#/WinRT aracı herhangi bir WinMD dosyası için bir projeksiyon derlemesi oluşturmak için kullanılabilir ve bu da .NET uygulamalarından WinRT bileşenlerinin tüketilmesine olanak tanır. Projeksiyon derlemesi birlikte çalışma derlemesi olarak da bilinir. Bu izlenecek yol, aşağıdakileri nasıl yapacağınızı gösterir:

  • C++/WinRT bileşeninden C# projeksiyonu oluşturmak için C#/WinRT paketini kullanın.
  • Bileşeni projeksiyon derlemesiyle birlikte NuGet paketi olarak dağıtın.
  • Bir .NET konsol uygulamasından NuGet paketini kullanın.

Önkoşullar

Bu izlenecek yol ve ilgili örnek için aşağıdaki araçlar ve bileşenler gerekir:

Yalnızca Visual Studio 2019. Visual Studio'da size C++/WinRT proje şablonları sağlayan C++/WinRT VSIX uzantısı. Proje şablonları Visual Studio 2022'de yerleşik olarak bulunur.

Bu kılavuzda Visual Studio 2022 ve .NET 6 kullanacağız.

Önemli

Ayrıca, GitHub'da C#/WinRT projeksiyon örneği bu konu için örnek kodu indirmeniz veya kopyalamanız gerekir. CsWinRT'i ziyaret edin ve url'yi almak için yeşil git clone düğmesine tıklayın. Örneği incelemek için README.md dosyasını okuduğunuzdan emin olun.

Basit bir C++/WinRT Windows Çalışma Zamanı bileşeni oluşturma

Bu kılavuzu izlemek için öncelikle C# projeksiyon derlemesini oluşturabileceğiniz bir C++/WinRT Windows Çalışma Zamanı bileşenine (WRC) sahip olmanız gerekir.

Bu kılavuzda GitHub'da indirdiğiniz veya kopyaladığınız C#/WinRT projeksiyon örneğiSimpleMathComponent WRC kullanılır. SimpleMathComponent, Windows Çalışma Zamanı Bileşeni (C++/WinRT) Visual Studio proje şablonundan (ki Visual Studio 2022 ile veya C++/WinRT VSIX uzantısıbirlikte gelir) oluşturuldu.

SimpleMathComponent projesini Visual Studio'da açmak için, depoyu \CsWinRT\src\Samples\NetProjectionSample\CppWinRTComponentProjectionSample.sln indirmenizde veya kopyanızda bulabileceğiniz dosyayı açın.

Bu projedeki kod, aşağıdaki üst bilgi dosyasında gösterilen temel matematik işlemleri için işlevsellik sağlar.

// 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 Desktop Compatible özelliğinin Evet olarak, SimpleMathComponent C++/WinRT Windows Çalışma Zamanı bileşen projesindeki ayarlandığını doğrulayabilirsiniz. Bunu yapmak için SimpleMathComponent proje özelliklerinde, Yapılandırma Özellikleri>Genel>Proje Varsayılanları'nın altında Windows Masaüstü Uyumlu özelliğini Evet olarak ayarlayın. Bu, .NET masaüstü uygulamalarının kullanılabilmesi için doğru çalışma zamanı bileşenlerinin yüklenmesini sağlar.

Masaüstü Uyumlu özellik sayfası

C++/WinRT bileşeni oluşturma ve WinMD dosyası oluşturma hakkında daha ayrıntılı adımlar için bkz. C++/WinRT ile Windows Çalışma Zamanı bileşenleri.

Uyarı

Bileşeninizde IInspectable::GetRuntimeClassName uyguluyorsanız geçerli bir WinRT sınıf adı döndürmesi gerekir. C#/WinRT interoperabilite için sınıf adı dizesini kullandığından, yanlış bir çalışma zamanı sınıf adı belirtildiğinde, bir InvalidCastExceptionoluşmasına neden olur.

Bileşen çözümüne projeksiyon projesi ekleme

İlk olarak, CppWinRTComponentProjectionSample çözümü Visual Studio'da hala açıkken, SimpleMathProjection projesini bu çözümden kaldırın. Ardından dosya sisteminizden SimpleMathProjection klasörünü silin (veya isterseniz yeniden adlandırın). Bu adımlar, bunları adım adım takip edebilmeniz için gereklidir.

  1. Çözümünüz için yeni bir C# kitaplık projesi ekleyin.

    1. Çözüm Gezgini'nde, çözüm düğümünüze sağ tıklayın ve Ekle>Yeni Proje'yi seçin.
    2. Yeni proje ekle iletişim kutusunda, arama kutusuna Sınıf Kitaplığı yazın. Dil listesinden C# öğesini ve ardından platform listesinden Windows'u seçin. Sadece Sınıf Kitaplığı olarak adlandırılan (ön ekleri veya son ekleri olmadan) C# proje şablonunu seçin veİleri'ye tıklayın.
    3. Yeni projeye SimpleMathProjection adını verin. Konum zaten \CsWinRT\src\Samples\NetProjectionSample klasörünün bulunduğu klasöre ayarlanmalıdır, ancak bunu onaylayın. Ardından İleri'ye tıklayın.
    4. Ek Bilgiler sayfasında, .NET 6.0 (Uzun süreli destek)seçin ve ardından Oluşturseçin.
  2. Taslak Class1.cs dosyasını projeden silin.

  3. C#/WinRT NuGet paketini yüklemek için aşağıdaki adımları kullanın.

    1. Çözüm Gezgini'ndeSimpleMathProjection projenize sağ tıklayın ve NuGet Paketlerini Yönet'i seçin.
    2. Gözat sekmesinde Microsoft.Windows.CsWinRT yazın veya arama kutusuna yapıştırın, arama sonuçlarında en son sürüme sahip öğeyi seçin ve ardından Yükle'ye tıklayarak paketi SimpleMathProjection projesine yükleyin.
  4. SimpleMathProjection'a ekleyin SimpleMathComponent projesine bir proje başvurusu. Çözüm Gezgini'nde, SimpleMathProjection proje düğümünün altındaki Bağımlılıklar düğümüne sağ tıklayın, Proje Başvurusu Ekleöğesini seçin ve SimpleMathComponent projesini seçin. >Tamam.

Projeyi henüz oluşturmaya çalışmayın. Bunu daha sonraki bir adımda yapacağız.

Şimdiye kadar, Çözüm Gezgini şuna benzer bir görünüme sahip olmalıdır (sürüm numaralarınız farklı olacaktır).

Projeksiyon projesi bağımlılıklarını gösteren Çözüm Gezgini

Projeleri kaynak dışında oluşturma

C#/WinRT projeksiyon örneği (GitHub'dan indirdiğiniz veya kopyaladığınız ve artık açık olan) CppWinRTComponentProjectionSample çözümü için, derleme çıktı konumu kaynakdışında oluşturmak için Directory.Build.props dosyasıyla yapılandırılır. Bu, derleme çıkışındaki dosyaların kaynak klasörün dışında oluşturulduğu anlamına gelir. C#/WinRT aracını kullanırken kaynak dışında derlemenizi öneririz. Bu, C# derleyicisinin proje kök dizini altındaki tüm *.cs dosyalarını yanlışlıkla toplamasını önler ve bu da yinelenen tür hatalarına neden olabilir (örneğin, birden çok yapılandırma ve/veya platform için derleme yaparken).

Bu, CppWinRTComponentProjectionSample çözümü için zaten yapılandırılmış olsa da, yapılandırmayı kendiniz gerçekleştirme konusunda alıştırma yapmak için aşağıdaki adımları izleyin.

Çözümünüzü kaynaktan oluşturacak şekilde yapılandırmak için:

  1. CppWinRTComponentProjectionSample çözümü hala açık durumdayken, çözüm düğümüne sağ tıklayın ve Ekle>Yeni Öğe'yi seçin. XML Dosyası öğesini seçin ve Directory.Build.props (uzantı olmadan) olarak .xml adlandırın. Var olan dosyanın üzerine yazmak için Evet'e tıklayın.

  2. Directory.Build.props içeriğini aşağıdaki yapılandırmayla değiştirin.

    <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 dosyasını kaydedin ve kapatın.

C#/WinRT yürütmek için proje dosyasını düzenleyin

Yansıtma derlemesini cswinrt.exe oluşturmak için aracı çağırabilmeniz için önce proje dosyasını birkaç proje özelliği belirtmek üzere düzenlemeniz gerekir.

  1. Çözüm Gezgini'ndeSimpleMathProjection düğümüne çift tıklayarak proje dosyasını düzenleyicide açın.

  2. TargetFramework belirli bir Windows SDK sürümünü hedeflemek için öğesini güncelleştirin. Bu, birlikte çalışma ve projeksiyon desteği için gerekli olan derleme bağımlılıklarını ekler. Bu örnek, Windows SDK'sı net6.0-windows10.0.19041.0 sürümünü (Windows 10, sürüm 2004 olarak da bilinir) hedefler. Platform öğesini, sonuç proje derlemesi herhangi bir uygulama mimarisinden başvurulabilsin diye AnyCPU olarak ayarlayın. Başvuruda bulunan uygulamaların önceki Windows SDK sürümlerini desteklemesine izin vermek için özelliğini de ayarlayabilirsiniz 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>
    

    Uyarı

    Bu kılavuz ve ilgili örnek kod için çözüm x64 ve Release için oluşturulmuş. SimpleMathProjection projesinin tüm çözüm mimarisi yapılandırmaları için AnyCPU için derlemek üzere yapılandırıldığını unutmayın.

  3. Birkaç C#/WinRT özelliğini ayarlayan ikinci PropertyGroup bir öğe (ilk öğeden hemen sonra) ekleyin.

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

    Bu örnekteki ayarlarla ilgili bazı ayrıntılar aşağıda verilmiştir:

    • CsWinRTIncludes özelliği, yansıtılan ad alanlarını belirtir.
    • özelliği, CsWinRTGeneratedFilesDir projeksiyon kaynak dosyalarının oluşturulduğu çıkış dizinini ayarlar. Bu özellik, yukarıdaki bölümde OutDir içinde tanımlanan olarak ayarlanır.
  4. SimpleMathProjection.csproj dosyasını kaydedip kapatın ve gerekirse projeleri yeniden için tıklayın.

Projeksiyon ile NuGet paketi oluşturma

.NET uygulama geliştiricileri için projeksiyon derlemesini dağıtmak için, bazı ek proje özellikleri ekleyerek çözümü oluştururken otomatik olarak bir NuGet paketi oluşturabilirsiniz. .NET hedefleri için NuGet paketinin projeksiyon derlemesini ve bileşenden uygulama derlemesini içermesi gerekir.

  1. .nuspec projesine NuGet belirtimi () dosyası eklemek için aşağıdaki adımları kullanın.

    1. Çözüm Gezginiiçinde, SimpleMathProjection düğümüne sağ tıklayın, Ekle>Yeni Klasörseçimini yapın ve klasörü nugetolarak adlandırın.
    2. nuget klasörüne sağ tıklayın, Yeni Öğe Ekleseçin,XML dosyasını seçin ve simpleMathProjection.nuspecadlandırın.
  2. Çözüm Gezgini'ndeSimpleMathProjection düğümüne çift tıklayarak proje dosyasını düzenleyicide açın. Paketi otomatik olarak oluşturmak için şu anda açık olan SimpleMathProjection.csproj dosyasına (mevcut PropertyGroup iki öğeden hemen sonra) aşağıdaki özellik grubunu ekleyin. Bu özellikler, NuGet paketini oluşturmak için NuspecFile ve dizini belirtir.

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

    Uyarı

    Ayrı bir paket oluşturmayı tercih ediyorsanız, aracı komut satırından nuget.exe çalıştırmayı da seçebilirsiniz. NuGet paketi oluşturma hakkında daha fazla bilgi için bkz. nuget.exe CLI kullanarak paket oluşturma.

  3. Paket oluşturma özelliklerini düzenlemek için SimpleMathProjection.nuspec dosyasını açın ve aşağıdaki kodu yapıştırın. Aşağıdaki kod parçacığı SimpleMathComponent'i birden çok hedef çerçeveye dağıtmak için örnek bir NuGet belirtimidir. hedef için SimpleMathComponent.winmd yerine lib\net6.0-windows10.0.19041.0\SimpleMathProjection.dllprojeksiyon derlemesinin belirtildiğini unutmayın. Bu davranış .NET 6 ve sonraki sürümlerde yenidir ve C#/WinRT tarafından etkinleştirilir. uygulama derlemesi de SimpleMathComponent.dlldağıtılmalıdır ve çalışma zamanında yüklenecektir.

    <?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>
    

    Uyarı

    SimpleMathComponent.dll, bileşenin uygulama derlemesi mimariye özgüdür. Diğer platformları destekliyorsanız (örneğin, x86 veya Arm64), önce istenen platformlar için SimpleMathComponent derlemeli ve bu derleme dosyalarını uygun RID göreli klasörüne eklemelisiniz. Projeksiyon derlemesiSimpleMathProjection.dll ve SimpleMathComponent.winmd bileşeni mimariden bağımsızdır.

  4. Yeni düzenlediğiniz dosyaları kaydedin ve kapatın.

Projeksiyon ve NuGet paketini oluşturmak için çözümü oluşturma

Çözümü oluşturmadan önce Visual Studio'da Yapılandırma Yöneticisi ayarlarını Yapılandırma Yöneticisi'nin altında denetlediğinden emin olun.> Bu kılavuz için Yapılandırma'i Sürüm olarak ve Platform'i x64 olarak çözüm için ayarlayın.

Bu noktada artık çözümü oluşturabilirsiniz. Çözüm düğümünüze sağ tıklayın ve Çözümü Derle'i seçin. Bu, önce SimpleMathComponent projesini ve ardından SimpleMathProjection projesini oluşturur. Bileşen WinMD ve uygulama derlemesi (SimpleMathComponent.winmd ve SimpleMathComponent.dll), projeksiyon kaynak dosyaları ve projeksiyon derlemesi (SimpleMathProjection.dll), _build çıktı dizini altında oluşturulur. Ayrıca oluşturulan SimpleMathComponent0.1.0-prerelease.nupkg NuGet paketini \SimpleMathProjection\nuget klasörünün altında da görebilirsiniz.

Önemli

Yukarıda bahsedilen dosyalardan herhangi biri oluşturulmazsa çözümü ikinci kez derleyin. Yeniden derlemeden önce çözümü kapatıp yeniden açmanız da gerekebilir.

.nupkg, Visual Studio'da gösterildiği gibi görünmesi için çözümü kapatıp yeniden açmanız gerekebilir (veya Tüm Dosyaları Göster seçeneğinibelirleyip sonra bu seçeneği kaldırın).

Çözüm Gezgini projeksiyon oluşturma gösteriyor

C# .NET 6 konsol uygulamasında NuGet paketine başvurma

Bir .NET projesinden SimpleMathComponent'i kullanmak için, yeni bir .NET projesine önceki bölümde oluşturduğumuz SimpleMathComponent0.1.0-prerelease.nupkg NuGet paketine bir başvuru ekleyebilirsiniz. Aşağıdaki adımlar, ayrı bir çözümde basit bir Konsol uygulaması oluşturarak bunun nasıl yapılacağını gösterir.

  1. C# Konsol Uygulaması projesi içeren yeni bir çözüm oluşturmak için aşağıdaki adımları kullanın (bu projeyi yeni bir çözümde oluşturmak SimpleMathComponent NuGet paketini bağımsız olarak geri yüklemenize olanak tanır).

    Önemli

    İndirdiğiniz veya C#/WinRT projeksiyon örneğinin kopyasında bulabileceğiniz bu yeni \CsWinRT\src\Samples\NetProjectionSample projesini klasörün içinde oluşturacağız.

    1. Visual Studio'nun yeni bir örneğinde Dosya>Yeni>Projeöğesini seçin.
    2. Yeni proje oluştur iletişim kutusunda Konsol Uygulaması proje şablonunu arayın. Sadece Konsol Uygulaması adlı C# proje şablonunu seçin (başka önek veya sonek olmadan) ve İleriöğesine tıklayın. Visual Studio 2019 kullanıyorsanız proje şablonu Konsol Uygulaması'dır.
    3. SampleConsoleAppadını yeni projeye verin, konumunu SimpleMathComponent ve SimpleMathProjection klasörlerinin bulunduğu klasöre ayarlayın ve İleri'yitıklayın.
    4. Ek Bilgiler sayfasında, .NET 6.0 (Uzun süreli destek)seçin ve ardından Oluşturseçin.
  2. Çözüm Gezgini'ndeSampleConsoleApp düğümüne çift tıklayarak SampleConsoleApp.csproj proje dosyasını açın ve ve TargetFramework özelliklerini aşağıdaki listede gösterildiği gibi görünecek şekilde düzenleyinPlatform. Platform Orada değilse öğesini ekleyin.

    <PropertyGroup>
      <OutputType>Exe</OutputType>
      <TargetFramework>net6.0-windows10.0.19041.0</TargetFramework>
      <Platform>x64</Platform>
    </PropertyGroup>
    
  3. SampleConsoleApp.csproj proje dosyası hala açıkken, SampleConsoleApp projesine simpleMathComponent NuGet paketine bir başvuru ekleyeceğiz. Projeyi oluştururken SimpleMathComponent NuGet'i geri yüklemek için, bileşen çözümünüzdeki RestoreSources klasörünün yolu ile özelliğini kullanabilirsiniz. Aşağıdaki yapılandırmayı kopyalayın ve SampleConsoleApp.csproj dosyasına (öğesinin Project içine) yapıştırın.

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

    Önemli

    RestoreSources Yukarıda gösterilen SimpleMathComponent paketinin yolu olarak ../SimpleMathProjection/nugetayarlanır. SimpleMathComponent ve SampleConsoleApp projelerinin aynı klasörde (NetProjectionSamplebu örnekte klasör) olması için bu kılavuzdaki adımları izlemeniz koşuluyla bu yol doğrudur. Farklı bir şey yaptıysanız bu yolu buna göre ayarlamanız gerekir. Alternatif olarak, çözümünüze yerel bir NuGet paket akışı ekleyebilirsiniz .

  4. SimpleMathComponent tarafından sağlanan işlevselliği kullanmak için Program.cs dosyasını düzenleyin.

    var x = new SimpleMathComponent.SimpleMath();
    Console.WriteLine("Adding 5.5 + 6.5 ...");
    Console.WriteLine(x.add(5.5, 6.5).ToString());
    
  5. Yeni düzenlediğiniz dosyaları kaydedip kapatın ve konsol uygulamasını derleyip çalıştırın. Aşağıdaki çıkışı görmeniz gerekir.

    Konsolu NET5 çıktısı

Bilinen sorunlar

  • Proje oluşturma sırasında şu tür bir hata görebilirsiniz: Hata MSB3271 "MSIL" oluşturulan projenin işlemci mimarisi ile "x86" adlı uygulama dosyasının işlemci mimarisi arasında bir uyuşmazlık oluştu ".. \SimpleMathComponent.winmd" için\SimpleMathComponent.dll"..". Bu uyuşmazlık çalışma zamanı hatalarına neden olabilir. İşlemci mimarilerini projenizle uygulama dosyanız arasında uyumlu hale getirmek için lütfen Configuration Manager aracılığıyla projenizin hedeflenen işlemci mimarisini değiştirmeyi düşünün veya projenizin hedeflenen işlemci mimarisiyle eşleşen işlemci mimarisine sahip bir uygulama dosyasıyla winmd dosyası seçin. Bu hatayı gidermek için C# kitaplık proje dosyanıza aşağıdaki özelliği ekleyin:
    <PropertyGroup>
        <!-- Workaround for MSB3271 error on processor architecture mismatch -->
        <ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>None</ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
    </PropertyGroup>
    

Dikkat edilmesi gereken diğer noktalar

Bu konu başlığında nasıl oluşturulacağını gösterdiğimiz C# projeksiyonu (veya birlikte çalışma) derlemesi oldukça basittir; diğer bileşenlere bağımlılıkları yoktur. Ancak Windows Uygulama SDK'sı türlerine başvurular içeren bir C++/WinRT bileşeni için C# projeksiyonu oluşturmak için projeksiyon projesinde Windows Uygulama SDK'sı NuGet paketine bir başvuru eklemeniz gerekir. Bu tür başvurular eksikse "Tür <T> bulunamadı" gibi hatalar görürsünüz.

Bu konu başlığında yaptığımız bir diğer şey de projeksiyonu NuGet paketi olarak dağıtmaktır. Şu anda , gereklidir.

Kaynaklar