2

如果我查看我的测试解决方案的 .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 项目中将 EmbedInteropTypes 设置为 false,然后才能自己生成 .DLL。(包含非 EmbedInteropType dll 的 dll)

有人有解决方案吗?

我在看

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

有什么建议么 ?

4

1 回答 1

0

首先,我认为您误解了程序集属性是什么。它们通常被放置在AssemblyInfo.cs并且看起来像[assembly:AssemblyCultureAttribute("de")]。而且EmbedInteropTypes我找不到任何属性。

现在,根据我使用 CodeDOM 引用 COM 程序集的测试,如果您不想嵌入互操作程序集,则无需执行任何特殊操作,只需引用它即可。

另一方面,如果您确实想嵌入它,则需要通过设置显式使用命令/link选项CompilerOptions.

于 2012-08-16T12:10:14.837 回答