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 .NET uygulamalar için nuget paketi olarak dağıtma adımlarını inceleyeceğiz.

.NET 6 ve sonraki sürümlerde, Windows meta veri (WinMD) dosyalarının tüketimi 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 projeksiyon derlemesi oluşturmak için kullanılabilir ve bu da .NET uygulamalardan 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.
  • .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:

  • Evrensel Windows Platformu geliştirme iş yükünün yüklü olduğu Visual Studio 2022 veya üzeri. Yükleme Ayrıntıları>Evrensel Windows Platformu geliştirmeC++ (v14x) Evrensel Windows Platformu araçları seçeneğini işaretleyin.
  • .NET 8.0 SDK (LTS) veya üzeri.

Bu kılavuzda Visual Studio 2022 veya üzerini ve .NET 8'i kullanacağız.

Önemli

Ayrıca, GitHub üzerinde C#/WinRT projeksiyon örneği bu konunun örnek kodunu 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ılavuz, GitHub'dan indirmiş veya kopyalamış olduğunuz C#/WinRT projeksiyon örneğine ait SimpleMathComponent WRC kullanılarak yapılır. SimpleMathComponentWindows Çalışma Zamanı Bileşeni (C++/WinRT) Visual Studio proje şablonundan oluşturulmuştur.

SimpleMathComponent projesini Visual Studio açmak için, depoyu indirmenizde veya kopyanızda bulabileceğiniz \CsWinRT\src\Samples\NetProjectionSample\CppWinRTComponentProjectionSample.sln dosyasını 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);
    };
}

SimpleMathComponent C++/WinRT Windows Çalışma Zamanı bileşeni projesi için Windows Desktop Uyumlu özelliğinin Yes olarak ayarlandığını onaylayabilirsiniz. Bunu yapmak için, SimpleMathComponent için project özelliklerinde, Configuration Properties>General>Project Defaults altında, Windows Desktop Compatible özelliğini Yes olarak ayarlayın. Bu, .NET masaüstü uygulamalarının çalıştırılması için doğru çalışma zamanı ikili dosyalarının 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ü hala Visual Studio açık durumdayken, 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'da çözüm düğümünüzü sağ tıklatın ve Add>Yeni Project'e tıklayın.
    2. Yeni proje ekle iletişim kutusunda, arama kutusuna Sınıf Kitaplığı yazın. Dil listesinden C# seçin ve ardından platform listesinden Windows 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 8.0 (Uzun süreli destek)'i seçin ve ardından Oluştur'yi seç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'da SimpleMathProjection projenize sağ tıklayın ve NuGet Paketlerini Yönet'yi seçin.
    2. Browse sekmesinde Microsoft.Windows yazın veya yapıştırın. CsWinRT arama kutusuna, arama sonuçlarında en son sürüme sahip öğeyi seçin ve ardından paketi SimpleMathProjection projesine yüklemek için Install öğesine tıklayın.
  4. SimpleMathProjection projesine SimpleMathComponent projesine bir proje başvurusu ekleyin. Çözüm Gezgini içinde, SimpleMathProjection project düğümü altındaki Dependencies düğümüne sağ tıklayın. Add Project Başvurusu öğesini seçin ve SimpleMathComponent project >OK seçin.

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

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

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

Projeleri kaynak dışında oluşturma

C#/WinRT projeksiyon örneğindeki CppWinRTComponentProjectionSample çözümü için (GitHub üzerinden indirdiğiniz veya kopyaladığınız ve şimdi açık olan), derleme çıktı konumu, Directory.Build.props dosyasıyla yapılandırılarak kaynak dışında oluşturulacak şekilde ayarlanmıştı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'da SimpleMathProjection düğümüne çift tıklayarak proje dosyasını düzenleyicide açın.

  2. belirli bir Windows SDK sürümünü hedeflemek için TargetFramework öğ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ürümünü net6.0-windows10.0.19041.0 (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 TargetPlatformMinimumVersion özelliğini de ayarlayabilirsiniz.

    <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 yüklemek 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 Gezgini'da SimpleMathProjection düğümüne sağ tıklayın, Add>Yeni Klasör öğesini seçin ve klasörü nuget olarak 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'da SimpleMathProjection 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 Build> altındaki Yapılandırma Yöneticisi ayarlarını 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'nin Visual Studio gösterildiği gibi görünmesi için çözümü kapatıp yeniden açmanız gerekebilir (veya yalnızca Tüm Dosyaları Göster) seçeneğini belirleyip seçimini kaldırmanız gerekebilir.

Çözüm Gezgini yansıtma oluşturmayı gösteriyor

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

.NET projeden SimpleMathComponent kullanmak için, Önceki bölümde oluşturduğumuz SimpleMathComponent0.1.0-prerelease.nupkg NuGet paketine başvuru eklemek için yeni bir .NET projesine eklemeniz yeterlidir. 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. Yeni bir Visual Studio örneğinde File>Yeni>Project'ı 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 Console Application şeklindedir.
    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 8.0 (Uzun süreli destek)'i seçin ve ardından Oluştur'yi seçin.
  2. Çözüm Gezgini içinde, SampleConsoleApp düğümünü çift tıklatarak SampleConsoleApp.csproj proje dosyasını açın ve TargetFramework ve Platform özelliklerini aşağıdaki listede gösterildiği gibi görünecek şekilde düzenleyin. 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 (Project öğesinin 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

  • Projeksiyon projesini oluştururken şöyle bir hata görebilirsiniz: Error MSB3271 'MSIL' oluşturulan projenin işlemci mimarisi ile '..\SimpleMathComponent.winmd' için '..\SimpleMathComponent.dll' uygulama dosyasının 'x86' işlemci mimarisi arasında bir uyuşmazlık vardı. Bu uyuşmazlık çalışma zamanı hataları oluşturabilir. İşlemci mimarilerini projenizle uygulama dosyanız arasında hizalamak için Yapılandırma Yöneticisi aracılığıyla projenizin hedeflenen işlemci mimarisini değiştirmeyi göz önünde bulundurun veya winmd dosyasını projenizin hedeflenen işlemci mimarisiyle eşleşen bir işlemci mimarisine sahip bir uygulama dosyasıyla seçin. Bu hataya geçici bir çözüm bulmak için, C# kitaplığı 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 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