Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Pakketten die COM-interoperabiliteitsassembly's bevatten, moeten een geschikt doelbestand bevatten, zodat de juiste EmbedInteropTypes metagegevens worden toegevoegd aan projecten met behulp van de PackageReference-indeling.
EmbedInteropTypes De metagegevens zijn standaard altijd onwaar voor alle assembly's wanneer PackageReference wordt gebruikt, zodat het doelbestand deze metagegevens expliciet toevoegt. Om conflicten te voorkomen, moet de doelnaam uniek zijn; Gebruik idealiter een combinatie van uw pakketnaam en de assembly die wordt ingesloten, waarbij u het {InteropAssemblyName} in het onderstaande voorbeeld vervangt door die waarde. (Zie ook NuGet.Samples.Interop voor een voorbeeld.)
<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>
Wanneer u het packages.config beheersformaat gebruikt, zorgt het toevoegen van verwijzingen naar de assembly's uit de pakketten ervoor dat NuGet en Visual Studio controleren op COM-interoperabiliteitsassembly's en de EmbedInteropTypes instelling op true zetten in het projectbestand. In dit geval worden de doelen overschreven.
Daarnaast worden de buildassets standaard niet transitief gestroomd. Pakketten die zoals hier worden beschreven, werken anders wanneer ze worden opgehaald als transitieve afhankelijkheid van een project naar projectverwijzing. De pakkettengebruiker kan toestaan dat ze doorstromen door de standaardwaarde PrivateAssets te wijzigen, zodat deze geen build bevat.