CodeDom - 将XML标志转化为一些常识

时间:2012-08-16 08:17:18

标签: .net interop codedom dll

如果我查看我的测试解决方案的.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>

我的问题是我需要在CodeDom项目中自己生成.DLL之前将EmbedInteropTypes设置为false。 (包含非EmbedInteropType dll的dll)

任何人都有解决方案吗?

我在看

_CurrentCodeFile.AssemblyCustomAttributes.Add(
   new CodeAttributeDeclaration("EmbedInteropTypes", new CodeAttributeArgument[] { new 
      CodeAttributeArgument(
         new CodePrimitiveExpression(false))}));

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

首先,我认为你误解了汇编属性是什么。它们通常放在AssemblyInfo.cs中,看起来像[assembly:AssemblyCultureAttribute("de")]。并且我找不到EmbedInteropTypes属性。

现在,根据我使用CodeDOM引用COM程序集的测试,如果你不想嵌入interop程序集,只需引用它就不需要做任何特殊的事情。

另一方面,如果您确实要嵌入它,则需要通过设置the /link command line option明确使用CompilerOptions