VSによってビルドされた(純粋なネイティブC ++).DLLがあります。クライアントとして、いくつかのネイティブC ++アプリケーションと、C ++/CLIで記述されたこのDLLの周りの.Netラッパーがあります。最後に、C#で記述された.Net-Wrapper用のクライアントアプリケーションがいくつかあります。
私の問題は、native.dllを.Netの世界とは異なる方法で配布する必要があり、VSがそのDLLを追跡しないことです。したがって、すべてのC#アプリを正しく機能させるには、各実行可能ディレクトリにコピーするか、%PATH%のどこかに配置する必要があります(開発者のコンピューターでは、DLLのバージョンが異なるさまざまなアプリを起動する可能性があるため避けます)。Wrapper-DLLを参照するUserControlがある場合、さらに大きな問題が発生します。DLLをVSのディレクトリにコピーするか、%PATH%に再度コピーする必要があります。しかし、最悪のケースは、翻訳ツールで発生します。このツールは、.Netアセンブリを追跡し、それらを外部のトランスレータに送信できるトランスレータパッケージにパックします。私の知る限り、ネイティブ.DLLをそのパッケージに入れる方法はありません。
そのため、ネイティブDLLを静的に.Net-Wrapperにリンクして、問題を解決する予定です。ただし、ネイティブアプリケーションの場合、このネイティブDLLは引き続きDLLである必要があります。
したがって、2つのオプションがあります。
- その2つのプロジェクトを作成します(1つは静的ライブラリを生成し、もう1つは動的ライブラリを作成します=>これを回避しようとします)
- DLLを静的にリンクするための解決策を見つける
- VSが1つのプロジェクトから2つの出力を生成するようにする方法を見つける