如果我查看我的测试解决方案的.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))}));
有什么建议吗?
答案 0 :(得分:0)
首先,我认为你误解了汇编属性是什么。它们通常放在AssemblyInfo.cs
中,看起来像[assembly:AssemblyCultureAttribute("de")]
。并且我找不到EmbedInteropTypes
属性。
现在,根据我使用CodeDOM引用COM程序集的测试,如果你不想嵌入interop程序集,只需引用它就不需要做任何特殊的事情。
另一方面,如果您确实要嵌入它,则需要通过设置the /link
command line option明确使用CompilerOptions
。