2009-08-21 35 views
2

ユーザーはClickOnceアプリケーションをインストールできません。エラーは、 "ファイルNLog.dllは有効なPortable Executable(PE)ファイルではありません。"私のマシンでうまく動作しますが、nLogがインストールされています。それはクライアントマシンでは不可能です。どのようにこれを動作させるための任意のアイデアですか?ClickOnceアプリケーションでNLogを展開する

答えて

2

あなたのNLogアセンブリがGACに配備されていれば、それをClickOnceセットアップに(単純に)組み込むことはできません。それらをローカルDLLとして展開してみてください。それが不可能な場合は、NLogを展開するために個別のセットアップ(またはMSI)が必要です。

+0

さらにヘンクの答えには、nlogのインストールには、あなたが使用できるどこかのGACでないdllが含まれている必要があります。あるいは、自分のサイトから(インストーラではなくzipファイルで)ダウンロードできるはずです。 –

+1

問題がなければNLogも使用しますが、DLLはアプリケーションとともにローカルに展開されます。 – Newtopian

3

ビルドオプションを確認して、 "アプリケーションファイル"にNLog.dllが含まれていることを確認します。これにより、 "ダウンロードグループ" /必須になります。

+0

これはNLogが含めることができる別のdllでなければならないため、問題の可能性が最も高いです。 Log4Netはこのように動作します。 –

+0

ありがとうございますが、DLLがダウンロードされるだけでエラーになります。 – Brian

0

プロジェクトにdllを追加し、BuildAction = None、 "出力ディレクトリにコピー"を "コピーしない"に設定します。

プロジェクトのNLogへの参照を削除します。参照を再追加し、プロジェクトに追加したばかりのdllをポイントします。参照のプロパティで、 "ローカルコピー"を "true"に設定します。

アプリケーションを実行すると、ローカルバージョンが表示され、アプリケーションをデプロイするとローカルバージョンがデプロイされ、そのアプリケーションがポイントされます。

これは多くのサードパーティのDLLで動作しますが、すべてではありません。それを試すことが最善のことです。

+0

ありがとうございますが、DLLがダウンロードされるだけでエラーになります。 – Brian

+0

プロジェクトでどのように参照されていますか?私は私の記憶を掘り下げなければならないでしょう、私は移植性のある実行エラーについて何かを覚えています...私がここで言ったようにプロジェクトを変更しましたか? – RobinDotNet

+0

ここにMSDNフォーラムの投稿があります - これがまったく役立つかどうかをご覧ください:http://social.msdn.microsoft.com/forums/en-US/winformssetup/thread/dc47dac1-6eb2-4533-a119-c1d87a36c4a5/ – RobinDotNet

7

すべてのNLog設定データをNLog.configファイルではなくApp.configファイルに入れて、ClickOnceを使用して展開した後で動作しました。エラーは発生せず、デプロイされたアプリケーションでロギングが機能していました。

+0

私のためにも動作します。 – Pat

8

ClickOnceを使用してインストールした場合、NLog.configがあなたのプログラムにコピーされない場合、この問題に対する回答が見つかりました。

  • ビルドアクション:コンテンツ
  • コピーを出力ディレクトリに次のようにあなたがSolution Explorerを使用してProjectNLog.configファイルを選択する必要があり、そのPropertiesを設定

    コピー常に

ClickOnceを使用して展開すると、ファイルはb eもコピーされました! :)

関連する問題