はい、参照として追加したWindows.winmdファイルは、プロジェクトを展開するための障害になります。あなたが使用するツールはその内容について混乱します。は.NETアセンブリのようにと見えます。しかし、そうではありません.winmdファイル形式は、古い形式のCOM形式ライブラリ形式の拡張です。 WinRTの場合、.NETのメタデータ形式を使用してTLBファイル形式の制限を超えました。
これはかなり良いアイデアでしたが、多くの.NETツールでそのままメタデータを使用できます。コンパイラやディスアセンブラのように、インフラストラクチャをすべて配置する必要はありませんでした。しかし、それは厳密に参照アセンブリの役割を果たします。コンパイラだけがその内容を使用し、決して配備すべきではありません。今すぐあなたはあまり良いアイデアが好きではありません:)
しかし、ClickOnceのデプロイメントは非常に簡単に修正できます。プロジェクト/プロパティ/パブリッシュタブ/アプリケーションファイルボタンを使用します。 Windows.winmdの[Publish Status]を[Exclude]に変更します。サンプル・プロジェクトのスクリーンショット:
あなたが「Microsoftインストーラ」によって何を意味するかは非常に明確ではありませんが、私はあなたがセットアッププロジェクトについて話と仮定します。慢性的な問題のためにVisual Studioから削除されましたが、それはまだギャラリーで利用できます。
これは難しい問題です。通常は、[追加]> [プロジェクト出力]コンテキストメニューの項目を使用して依存関係を把握します。それはもう動作しません、それは悲惨な非descriptのエラーメッセージが表示されて死ぬ:
ERROR: An error occurred while validating. HRESULT = '80070057'
エラーコードは、問題を絞り込む助けにはならない「無効なパラメータ」を意味します。しかし、.exeアセンブリ内のWindows.winmd参照を解決しようとすると、安全に消滅すると想定することができます。
回避策はないそれが依存関係を自動検出しますが、それらを自分で選ぶようにすることです。 "File machine on target machine"というエディタ画面で、アプリケーションフォルダを選択します。 「Primary output from ...」を右クリックし、「削除」を選択します。
アプリケーションフォルダ>追加>ファイルを右クリックし、bin \ Releaseフォルダからプロジェクトの.exeファイルを選択します。他のファイルについても同様の操作を繰り返しますが、ClickOnceアプリケーションファイルリストにあるファイルリストをガイドとして使用できます。
プロジェクトをビルドし、あなたが今得る:
完全に良性である
WARNING: Unable to find dependency 'WINDOWS' (Signature='(null)' Version='255.255.255.255') of assembly 'WindowsFormsApplication144.exe'
は、我々はそれを見つけるにしたくない、Setup.exeプログラムが正常に動作します。
ありがとう@HansPassant、明日私はubuntuのラップトップを持っているように私はそれを試してみましょう。はい、「Microsoft Installer」によって、私はセットアッププロジェクトを意味しました。私は、このVisual Studio機能がプログラム「Microsoft Installer」のインストール後に存在するため、それを考えたからです。 – eeadev
ClickOnceで動作しますが、 MSIファイルを生成しない、そうですか? MSIが必要な場合はどうすればいいですか? – eeadev
あなたは、あなたが話していた「Microsoft Installer」からMSIを入手します。それは私がテストしたシナリオで、そこからエラーメッセージをコピー/ペーストします。 –