質問: MSBuildにプラットフォームに依存しないCOMReferenceを生成させるにはどうすればよいですか? 私は最近、すべてのテストプロジェクトをdotnet 4からdotnet 3.5に変更しました(CLR 2.0でコードをテストしたいので、[{F935DC20-1CF0-11D0-ADB9-00C04FD58A0B} 1 0 0 tlbimp False True](https://stackoverflow.com/questions/9079518/how-big-is-the- net-4-0-test-assemを使用してネット - 3-5-アセンブリーを実行する際のリスク - ここで)ほとんどのものは正常に動作しますが、テストプロジェクトの1つに依存性がありますIWshRuntimeLibraryにあります。これは、次のcsprojスニペットで指定します。 )ほとんどのものは正常に動作しますが、テストプロジェクトの1つに依存性がありますIWshRuntimeLibraryにあります。これは、次のcsprojスニペットで指定します。
回答: *Seemed* is correct, importing the type library in Visual Studio is always going to set the 32-bit flag in the interop assembly header. You can see this by running corflags.exe on the generated assembly. VSからプラットフォームに依存しない相互運用ライブラリを作成することはサポートされていません。 Tlbimp.exeを自分で実行する必要があります。 Visual Studioのコマンドプロンプトを使用して、プロジェクトディレクトリに移動します。次に、このコマンドを実行します。 > Tlbimp/machine:不可知論c:\ windows \ system32 \ wshom.ocx > > 生成されたInterop.IWshRuntimeLibrary.dllへの参照をProject +参照の参照、[参照]タブで追加します。ソースコントロールでDLLをチェックインしても問題ありません.COMインターフェイスは石でキャストされています。メインのEXEプロジェクトでPlatformターゲットをx86に設定することも、別の回避策です。