2017-12-01 18 views
0

私のソリューションでは、Excelアドインであるクラスライブラリがあります。ソリューションやそのプロジェクトをビルドするときは、最初にxxx.dllという名前のファイルを出力し、x64をターゲットにしてxxx_x64.dllというファイルを出力して、このプロジェクトを最初にx86を対象にしてビルドします。x86プラットフォームとx64プラットフォームの両方でプロジェクトのターゲットを構築する

これを行うにはどうすればよいですか、またはどのようにしてcsprojファイルを編集できますか?ありがとう。

+0

間違った問題を解決しようとしています。 C#コンパイラはMSILを生成し、どのアーキテクチャでも動作します。 DLLを展開するにはRegasm.exeで登録する必要があります。32ビットと64ビットの2つのバージョンがあります。ユーザーがインストールしたOfficeの特色について何も知らない場合は、単に両方のバージョンを実行してください。同じDLLを使用しています。 –

+0

@WPInfo、この問題のアップデートはありますか?あなたの問題を解決しましたか?そうでない場合は、この問題に関する最新情報をお知らせください。 –

答えて

0

最後に、Visual Studioで共有プロジェクトを使用してこの問題を解決しました。私が欲しいのは、2つのExcelアドインアセンブリがx86プラットフォームまたはAnyCPUをターゲットとし、もう1つがx64プラットフォームをターゲットにしている、ソリューションを構築することによって生成されることです。

enter image description here

すべてのコードファイル(* CS)とリソース(画像やxmlファイル)を共有プロジェクトに移動し、両方の他の2つのプロジェクトを持っている:ここでは

は私のプロジェクトのスナップショットでありますそれへの参照。

他の2つのプロジェクトについては、それらの間にいくつかの違いがあります。アセンブリ名とターゲットプラットフォーム。 1つはXXX.dllで、ターゲットはAnyCPU、もう1つはXXX_64.dllで、ターゲットはx64です。

ソリューションをビルドするとき、2つのプロジェクトのそれぞれが対応するアセンブリを発行します。

0

どのようにすればよいですか、またはどのようにしてcsprojファイルを編集できますか?

アセンブリxxx.dllの名前は、プラットフォームが付けられたデフォルトの出力アセンブリを変更したい場合、あなたは内のコードを以下で簡単な変更、このプロパティの値ができ、プロジェクトファイルにプロパティAssemblyNameによって定義されますプロジェクトファイル.csproj

<AssemblyName>TestWithDllWithPlatform_$(Platform)</AssemblyName> 

しかし、あなたはx86用ターゲットとする場合、この設定で、あなたはxxx_x86.dllという名前の出力アセンブリを取得します。この場合

if $(Platform) == x64 (copy /y "$(TargetPath)" "$(ProjectDir)$(OutDir)$(TargetName)_$(Platform).dll") 

それでもxxx.dllはなくxxx_x86.dllという名前のファイルをoutputingとx86用ターゲットにしたい場合は、あなたがx64のためにターゲットにするときビルド後のイベントでのdllファイルの名前を変更しようとすることができますあなたがx64を対象とする場合、アセンブリxxx_x64.dllだろうという名前のoutputing:

enter image description here

のほかに、yの場合このことができます

if $(Platform) == x64 (del "$(TargetPath)") 

希望を:OUを使用すると、ビルド後に以下のコマンドでそれを削除することができ、オリジナルのxxx_.dllおく必要はありません。

関連する問題