CodeDom - XML флаг в некотором здравом смысле
Если я просмотрю .csproj моего тестового решения я вижу флаг следующим образом:
<ItemGroup>
<Reference Include="Interop.Encore">
<HintPath>............\Interop.Encore.dll</HintPath>
**<EmbedInteropTypes>False</EmbedInteropTypes>**
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
Мой вопрос si мне нужно установить EmbedInteropTypes в false в проекте CodeDom, прежде чем он генерирует a .DLL сама по себе. (dll, которая содержит не EmbedInteropType dll)
У кого-нибудь есть решение ?
Я смотрю на
_CurrentCodeFile.AssemblyCustomAttributes.Add(
new CodeAttributeDeclaration("EmbedInteropTypes", new CodeAttributeArgument[] { new
CodeAttributeArgument(
new CodePrimitiveExpression(false))}));
Есть предложения ?
1 ответ:
Во-первых, я думаю, что вы неправильно понимаете, что такое атрибуты сборки. Они обычно помещаются в
Теперь, основываясь на моих тестах со ссылками на сборки COM с помощью CodeDOM, вам не нужно делать ничего особенного, если вы не хотите внедрять сборку взаимодействия, просто ссылайтесь на нее.AssemblyInfo.cs
и выглядят как[assembly:AssemblyCultureAttribute("de")]
. И нет никакого атрибутаEmbedInteropTypes
, который я мог бы найти.С другой стороны, если вы хотите внедрить его, вам нужно будет явно использовать параметр командной строки
/link
, установивCompilerOptions
.