16

クリック ワンスで展開されるスマート クライアント アプリケーションがあります。問題は、Visual Studio の公開アプリケーション ファイル ダイアログに表示されない依存アセンブリにコンテンツ ファイルがあることです。

これは、展開するたびに、すべてのコンテンツ ファイルをアプリケーション ビルド出力ディレクトリから公開ディレクトリにコピーし、マニフェストを再構築する必要があることを意味します。これは非常に面倒です。

これらのファイルが Visual Studio のパブリッシャーに表示されないのはなぜですか?

4

5 に答える 5

11

私は@John Hunterからの答えの進化を見つけたようで、これははるかに簡単です。これをcsprojに追加してください。

<ItemGroup>
    <Content Include="Bin\**\*.rpt" />
</ItemGroup>

これにより、Visual Studio は、そのフォルダー内のすべての *.rpt ファイルをソリューションの一部として自動的に表示します。*.*すべてを蓄積するために行くことができます。次のようなコンテナフォルダがある場合、これはより理にかなっていますbin\MyDeployables\**\*.*

Cassette MSBuild を使用して公開時に JS を結合および縮小し、組み込みの VS パブリッシュ ツールを介して作成されたファイルを公開できるようにするための同様の使用法に従いました。

于 2012-08-30T18:08:02.587 に答える
3

この投稿からの私の答えがあなたの質問に答えると思います。

概要
いずれか... [
リンクとして追加] 機能を使用して、コンテンツ ファイルをプロジェクトに追加します。
または...
ビルド後のイベントを作成して、コンテンツ ファイルをメインの出力フォルダーにコピーします。

于 2009-02-26T15:00:48.970 に答える
3

Visual Studio がパブリッシュ UI で参照コンテンツ ファイルを表示できない理由はまだわかりませんが、パブリッシュにこれらのファイルを強制的に含めるための回避策を見つけました。

この MSDN 記事で提案されているように、これをプロジェクト ファイルに入れます。

<ItemGroup>
<AdditionalPublishFile Include="$(OutputPath)\**\*.rpt">
  <Visible>False</Visible>
</AdditionalPublishFile>
</ItemGroup>
<Target Name="BeforePublish">
  <Touch Files="@(IntermediateAssembly)" />
  <CreateItem Include="@(AdditionalPublishFile)" AdditionalMetadata="TargetPath=%(RecursiveDir)%(Filename)%(extension);IsDataFile=false">
    <Output TaskParameter="Include" ItemName="_DeploymentManifestFiles" />
  </CreateItem>
</Target>

状況によっては、これらの変更を有効にするために、(プロジェクトをリロードするだけでなく) Visual Studio を再起動する必要がある場合があることに注意してください。

于 2009-03-23T13:56:19.630 に答える
0

このソリューションは、http: //blogs.msdn.com/mwade/archive/2008/06/29/how-to-publish-files-which-are-not-in-the-project.aspxに基づいていると思います。

投稿に対する私の最近のコメントによると:

これらが「アプリケーション ファイル」リストに表示されるのはどの時点でしょうか (存在する場合)。

それとも、デプロイされたデータ ファイルの一覧にそれらが含まれると想定しても問題ありませんか?

私の場合、私は使用したいと思っています:

間違い

ビルド ディレクトリの "Resources" サブフォルダー内にある依存アセンブリのすべてのコンテンツ ファイルを含めるには。

アンドリュー。

于 2009-08-27T21:46:46.137 に答える