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>

私の質問は、.DLL を独自に生成する前に、CodeDom プロジェクト内で EmbedInteropTypes を false に設定する必要があることです。(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 に答える