2017-12-10 17 views
0

私はVisual Studio 2017を使用しており、いくつかのWebプロジェクトとWebジョブプロジェクトのソリューションを用意しています。ローカルでデバッグ中にwebjobファイルを含めるにはどうすればよいですか?ウェブパッケージを公開するときに除外するにはどうしたらいいですか?

は、私がしたいいくつかのファイルは、私がしたい開発環境でローカルで実行している場合を含めたWebパブリッシングパッケージの一部として展開されることからを除外しています。

私がある、ここhttp://sedodream.com/2010/05/01/WebDeploymentToolMSDeployBuildPackageIncludingExtraFilesOrExcludingSpecificFiles.aspxや他の場所で説明したプロセスを使用しようとしています:

<ItemGroup> 
    <ExcludeFromPackageFiles Include="connectionstrings.config"> 
     <FromTarget>Project</FromTarget> 
     <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
    </ExcludeFromPackageFiles> 
    </ItemGroup> 

これは私のWebプロジェクトのために完璧に動作 - connectionstrings.configファイルを構築するときには、私のbin\にコピーされることを意味私のwebjobプロジェクトに実装されている場合、ファイルは私のbin\ディレクトリにコピーされますが、展開パッケージにも含まれています。

コピーファイル:私は見MSBuildの出力で

:のconnectionStrings \への「bin \ ProdBuildCfg "C \ユーザーは私のプロジェクト\ myappの\ myappの\ webjob1 \ connectionstrings.config \ \ドキュメント\します"。 config "と入力します。それはまた私がローカル/デバッグを実行することができます、そしてので私が欲しいものである

コピーC:\ユーザーは、私のbin \ \プロジェクト\ myappの\ myappの\ webjob1 \ \ドキュメント\ ProdBuildCfg \ connectionstrings.configをobj \ ProdBuildCfg \ Package \ PackageTmp \ app_data \ jobs \ continuous \ webjob1 \ connectionstrings.configにコピーします。

これは問題を示しています - connectionstrings.configは引き続きパブリッシング/デプロイメントのためにパッケージディレクトリにコピーされています。

上記の記事などに記載された方法は、Webプロジェクトに適用され、彼らはあなたがプロジェクトファイルの

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />

ラインの下<ItemGroup>を置く必要があることを示します。私のプロジェクトファイルが適切な<Import Project="...*.targets')" />行が含まれていないか、私はではないんだけどどちらか - 私は問題がターゲットに関連する疑いがある

<Import Project="..\packages\Microsoft.Web.WebJobs.Publish.1.0.13\tools\webjobs.targets" Condition="Exists('..\packages\Microsoft.Web.WebJobs.Publish.1.0.13\tools\webjobs.targets')" />

:Webjobプロジェクトは、その行を含めるのではなく似た何かを持っていませんファイル内の正しい場所。

次の私はここHow do I include webjob files while debugging locally but exclude when publishing a web package?を述べた方法で試してみました。(私の理解がCopy to output directory設定した結果、そのアクションが明らかにされている

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> 
<ExcludeFilesFromDeployment>connectionstrings.config</ExcludeFilesFromDeployment> 
</PropertyGroup> 

私はNoneCopy to output directoryセットに設定connectionstrings.configのビルドアクションを持つAlwaysにしますパッケージング/デプロイメントに関連するアクションとは異なります)。同じ結果。 (私は自分のビルド構成のために私が右の<PropertyGroup>にいることを保証しました。

注:私はVSでプロジェクトを右クリックし、「アズールwebjobとして公開」を選択またはデバッグ中に私はwebjobファイルを含めるにはどうすればよいmsbuild myproj.csproj /p:DeployOnBuild=true /p:Configuration=Release /p:PublishProfile="Prod" /p:VisualStudioVersion=15.0 /p:Password=

答えて

0

のように公開することのMSBuildコマンドを使用するか展開していますウェブパッケージを公開する際にはローカルで除外しますか?私の知る限り

、あなたが任意のファイルを公開したくない場合は、あなただけに、ファイルのプロパティを設定する必要があります「として出力ディレクトリコピーがはコピーしないでください」。こうすることで、特定のファイルがパッケージの一部ではなく、決してAzureにはなりませんというアプリケーションをパッケージ化するときに使用します。

更新:

残念ながら、その設定は私がローカルで実行またはデバッグすることはできません意味 出力ディレクトリにコピーされることからファイルを防ぎます。

プロジェクトをデバッグするときに、「copy to output directory」を「Copy always」と設定できます。プロジェクトを展開する場合は、手動でビルドをクリーニングし、値をDO NOT COPYに変更します。

これらをすべて手作業で実行したくない場合は、回避策をご提供いただきたいと思います。

これを行うには、プロジェクトをアンロードします。そして、プロジェクトの最後に、単にスクリプト以下の終了タグ、場所の前に:このターゲットで

<Target Name="ExcludeFileFromPackage" BeforeTargets="PipelineCopyAllFilesToOneFolderForMsdeploy"> 
    <Message Text="Delete the connectionstrings.config from Obj folder to exculde this file in the package directory" /> 

    <Delete Files="$(ProjectDir)obj\Release\Package\PackageTmp\connectionstrings.config" /> 
    </Target> 

、VS/MSBuildのは、前にパッケージとしてプロジェクトをパブリッシュOBJフォルダからconnectionstrings.configを削除します。

+0

残念ながら、この設定は出力ディレクトリにファイルがコピーされないようにします。つまり、ローカルでは実行またはデバッグできません。開発環境でローカルで実行しているときに含めるファイルがいくつかありますが、これをWeb公開パッケージの一部として展開しないようにする必要があります。 – Howiecamp

+0

@Howiecamp、あなたの返事をありがとう。 'ExcludeFromPackageFiles'のプロパティはw​​ebjobプロジェクトでは機能しません。この問題を解決するには、回避策を提供しました。更新された回答を確認して詳細情報を確認することができます。お役に立てれば。 –

+0

あなたが提案している ''アプローチを試してみましょう。 'msbuild.exe'コマンドライン(例えば私の質問を参照してください)を使ってパブリッシュするか、対話的にVSを右クリックして" Azure webjobとして公開 "を選択してパブリッシュしても同じ動作をするでしょうか? – Howiecamp

関連する問題