COM birlikte çalışma derlemeleri içeren NuGet paketleri oluşturma
COM birlikte çalışma derlemeleri içeren paketler, PackageReference biçimi kullanılarak projelere doğru EmbedInteropTypes
meta verilerin eklenmesi için uygun bir hedef dosyası içermelidir. Varsayılan olarak, EmbedInteropTypes
PackageReference kullanıldığında meta veriler tüm derlemeler için her zaman false olur, bu nedenle hedefler dosyası bu meta verileri açıkça ekler. Çakışmaları önlemek için hedef adın benzersiz olması gerekir; ideal olarak, aşağıdaki örnekteki öğesini bu değerle değiştirerek {InteropAssemblyName}
paket adınızın ve eklenmiş olan derlemenin bir bileşimini kullanın. (Ayrıca bkz. Bir örnek için NuGet.Samples.Interop .)
<Target Name="Embedding**AssemblyName**From**PackageId**" AfterTargets="ResolveReferences" BeforeTargets="FindReferenceAssembliesForReferences">
<ItemGroup>
<ReferencePath Condition=" '%(FileName)' == '{InteropAssemblyName}' AND '%(ReferencePath.NuGetPackageId)' == '$(MSBuildThisFileName)' ">
<EmbedInteropTypes>true</EmbedInteropTypes>
</ReferencePath>
</ItemGroup>
</Target>
Yönetim biçimini kullanırken packages.config
, paketlerden derlemelere başvurular eklenmesinin NuGet ve Visual Studio'ya COM birlikte çalışma derlemelerini denetlemesine ve proje dosyasında true olarak ayarlanmasına EmbedInteropTypes
neden olduğunu unutmayın. Bu durumda hedefler geçersiz kılınmış olur.
Ayrıca, varsayılan olarak derleme varlıkları geçişli olarak akış yapmaz. Burada açıklandığı gibi yazılan paketler, bir projeden proje başvurusuna geçişli bağımlılık olarak çekildiğinde farklı çalışır. Paket tüketicisi, PrivateAssets varsayılan değerini derlemeyi içermeyecek şekilde değiştirerek akış yapmalarına izin verebilir.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin