10

ClickOnce でデプロイするアプリケーションを開発しています。.NET 4.5 から .NET 4.0 にダウングレードし、不適切な参照を修復して置き換えた後、展開パッケージに問題が発生しました。一部のファイルは、最も重要なことSystem.Net.Http.dllとして、アプリケーションと共にデプロイされません。私はいくつかのチェックを行いましたが、なぜこれが正確に起こるのかを結論づけることはできません. 私の疑いは、このアセンブリがターゲットマシンに既に存在することを期待してパッケージが作成されていることです。ターゲット フレームワークが .NET 4.5 の場合、これは妥当ですが、.NET 4 になった今はそうではありません。奇妙なことに、System.Net.Http.Extensions.dll正しく展開されます。

設定とバージョン番号は両方のファイルで同じです。 ここに画像の説明を入力

参照は同じパッケージに対して行われます:

<Reference Include="System.Net.Http, Version=2.2.13.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
  <HintPath>..\packages\Microsoft.Net.Http.2.2.13\lib\net40\System.Net.Http.dll</HintPath>
  <SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="System.Net.Http.Extensions, Version=2.2.13.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\packages\Microsoft.Net.Http.2.2.13\lib\net40\System.Net.Http.Extensions.dll</HintPath>
</Reference>

ターゲット プラットフォームは .NET 4 であり、展開の前提条件も .NET 4 と KB の更新です。 ここに画像の説明を入力

ファイルはアプリケーションファイルダイアログにも表示されません: ここに画像の説明を入力

何か案は?他のすべてが失敗した場合は、アセンブリをコンテンツ ファイルとして展開しようとするかもしれません。参照を削除して再度追加しても違いはありませんでした。

4

1 に答える 1

17

Microsoft がVisual Studio サポート スレッドに投稿したメッセージには、次のように書かれています。

これは、Visual Studio 2013 の次の更新で修正される予定です。それまでは、アセンブリをリンクとして追加する回避策を使用する必要があります。

それで、次の解決策を見つけました(問題8)

これは、ClickOnce が特定の必要なアセンブリの展開に失敗したために発生します。回避策として、次の手順を実行します。

  1. プロジェクトを右クリックし、[既存のアイテムを追加] を選択します。
  2. HttpClient net40 パッケージ フォルダーを参照します。
  3. [ファイル名] テキスト ボックスに と入力します。
  4. CTRL を押したまま、System.Net.Http.dll と System.Net.Http.Primitives.dll を選択します。
  5. [追加] ボタンの横にある下向き矢印をクリックし、[リンクとして追加] を選択します。
  6. ソリューション エクスプローラーで、Ctrl キーを押しながら System.Net.Http.dll と System.Net.Http.WebRequest.dll を選択します。
  7. 選択範囲を右クリックし、[プロパティ] を選択して、[出力ディレクトリにコピー] を [常にコピー] に変更します。
  8. 再発行

私の場合、ライブラリSystem.Net.Httpを 1 つだけ追加するだけで十分です。

于 2013-09-20T13:09:33.997 に答える