2016-03-24 13 views
0

まず、いくつかの背景。私はWiX Toolsetを使用してインストーラを作成するアプリケーションに取り組んでいます。私たちは頻繁にWiXを使ってクライアントのディレクトリを設定し、必要な場所に必要なDLLを配置します。VSリファレンスのDLL名のハイフン

問題:私はアプリケーションに新しいDLLを追加し、それを "NewCode.dll"と呼ぶことができます。 NewCode.DLLには依存関係があります。 "Dependency-1.DLL"だから私のプログラムを動作させるためには、インストーラにDependency-1.DLLも含める必要があります。そして、これは私が立ち往生する場所です。 Dependency-1.DLLの名前に「-1」があるため、Visual Studioではプロジェクトの参照として追加することはできません。参照として追加することなく、私はWiXがそれを見つけることができないと考えているので、NewCode.DLLは実行時に失敗します。 NewCode.DLLはこれ以上Dependency-1.DLLを参照できないため、ハイフンを削除するだけではオプションではありません。

私は、手動でDependency-1.DLLを必要なフォルダに配置すると、すべてが動作することを確認しました。だから私はいくつかの "バッチファイルポストビルドアクションマジック"をコピーするファイルは、有効なオプションですが、その理想的ではないと思います。私は本当にWiX Toolsetに頼り続けたいと思っています。


仕事の答え:

受け入れソリューションは、私の問題を修正しました。しかし、他の誰かが私と同じトラップに落ちた場合、私は自分のポストに追加するつもりだと思った。最初のDLLは直接参照ですが、2番目のDLLは最初のDLLが依存する推移的な参照です。私はTargetDirになるDLLを探す場所のコンポーネントグループのデフォルトの場所を設定しました。私の古い設定では、これは、VSが "Copy Local = true"経由でTargetDirにDLLをコピーすることを処理することを前提としていました。今、私が追加している2番目のDLLを見ると、私はソースを明示的に設定し、WiXはDLLを私のために動かしています。

WiXが私のためにDLLを動かすので、これは、ハイフネーションされたDLL名を参照として許可しないVSの問題を回避できます。

<ComponentGroup Id="AForge" Directory="INSTALL_ROOT" Source="$(var.Pslf.TargetDir)"> 

<Component Guid="{FA5BEE4F-0D54-4B76-BAEF-DC8E31F6605F}"> 
     <File Name="AForge.Video.FFMPEG.dll" KeyPath="yes"/> 
</Component> 

<Component Guid="{1FB3EFEA-1BF3-4416-8AE3-026F2E4EECFC}"> 
     <File Name="avcodec-53.dll" KeyPath="yes" Source="$(var.SolutionDir)pslf\lib\AForge\avcodec-53.dll"/> 
</Component> 
</ComponentGroup> 
+0

Visual Studioのどのバージョンですか?私はちょうど働いていた既知のdllへの参照を追加し、その参照を削除し、ファイル名に "-1.dll"を含めるようにdllの名前を変更しました。これはビジュアルスタジオ2015にあります。「プロジェクトへの参照として追加することはできないようです」 - あなたは*「参照 - >参照」に行きますか?そしてエラーが発生しましたか?エラーは何ですか? – Quantic

+0

私は別の解決策を見つけましたが、「アセンブリファイルが無効かアクセスできない」というエラーメッセージが表示されました。しかし、奇妙な私に当たったのは、名前からハイフンを削除するだけで、この問題が修正されたということです(私の目的のためにはうまくいかない) – CM0491

答えて

1

事前ビルドされたDLLの参照は必要ありません。ソース属性に直接パスを入れてください:

関連する問題