9

公開プロファイルを作成するときに、公開でこのプロファイルに使用する構成を選択するオプションがあります。オプションは、Debug、Release、またはStagingのようなカスタム定義のオプションです。問題は、リリースまたはデバッグ以外の構成、たとえばステージングを選択した場合、Visual Studioは私の選択を完全に無視し、変換とビルドにWeb.Release.configを使用することです。私は何か間違ったことをしていますか、それともこれは仕様によるものですか?公開では、リリースとデバッグのみが許容可能な構成として認識されるようです。この問題について何か考えはありますか?

Visual Studio2012RTMを使用しています。

アップデート1::「NightlyLive-任意のCPU」構成が選択されました:

ここでは、独自のカスタム構成「NightlyLive」を選択します。

ここに画像の説明を入力してください

そして、これが私が公開したときに何が起こるかです:

6>------ Build started: Project: UI.Next, Configuration: Release Any CPU ------
7>------ Publish started: Project: UI.Next, Configuration: Release Any CPU ------
7>Transformed Web.config using [...]\UI.Next\Web.Release.config into obj\Release\TransformWebConfig\transformed\Web.config.

ご覧のとおり、Release Any CPU(NightlyLive-Any CPUの代わりに)を使用してプロジェクトをビルドし、Web.Release.config(Web.NightlyLive.configの代わりに)を使用してWeb.configを変換します。

アップデート2::プロファイル名が「NightlyLive」に名前変更されました:

ここでは、プロファイル名の名前を「test」から「NightlyLive」に変更します。

ここに画像の説明を入力してください

コンソール出力は次のとおりです。

6>------ Build started: Project: UI.Next, Configuration: Release Any CPU ------
7>------ Publish started: Project: UI.Next, Configuration: Release Any CPU ------
7>Transformed Web.config using [...]\UI.Next\Web.Release.config into obj\Release\TransformWebConfig\transformed\Web.config.
7>[...]\UI.Next\Web.NightlyLive.config(23,18): Warning : Argument 'debug' did not match any attributes
7>[...]\UI.Next\obj\Release\TransformWebConfig\transformed\Web.config(78,6): Warning : No attributes found to remove
7>Transformed obj\Release\TransformWebConfig\transformed\Web.config using [...]\UI.Next\\Web.NightlyLive.config into obj\Release\ProfileTransformWebConfig\transformed\Web.config.

したがって、ここでも、ReleaseAnyCPUを使用して構築しています。

ただし、Web.configの場合、最初にWeb.Release.configを使用して変換し、次にWeb.NightlyLive.configを使用して前の変換に加えて2番目の変換を実行します。

私が思う二重変換は設計によるものであり、理にかなっています。ただし、カスタム変換ファイルを強制的に使用するには、プロファイル名を構成名に変更する必要があるという事実は正しくありません。

アップデート3::TestSolutionが追加されました

簡略化されたソリューションは、ここからダウンロードできます。

最初に、まったく新しいvs2012ソリューションを作成しましたが、すべてが正常に機能しました。そこで、現在のソリューションを取り除いて、テストケースとしてアップロードすることにしました。

私のソリューションは元々、vs2012で開いたvs2010ソリューションであり、vs2012がソリューションに必要な変更を加えたことに注意してください。

アップデート4::評決

私のソリューション構成はすべて台無しにされたと思います。したがって、基本的にこの問題を解決するために、カスタマイズしたソリューションとプロジェクト構成をすべて削除し、web.config変換ファイルとともにそれらを再作成しました。

問題が解決しました。

4

3 に答える 3

13

私はまったく同じ行動を経験しました。

私にとっての問題は、カスタム ソリューション構成が、デプロイしようとしていた Web プロジェクトのカスタム構成を適切に参照していなかったことです。

次のことを試してください。

  1. ソリューションを右クリックし、プロパティを入力します
  2. 左上のドロップダウンからカスタム構成を選択します
  3. [構成プロパティ] を展開し、[構成] を選択します。
  4. Web プロジェクトに、表で選択された正しいカスタム構成があることを確認してください。

これを行った後、カスタム構成を使用した Web デプロイは適切に機能しました。

于 2013-05-23T18:38:08.303 に答える
3

また、VS2010 ソリューションを VS2012 に変換しましたが、同じ問題が発生していました。これらの回答の助けを借りて、注目すべき手がかりを得ることができたので、パブリッシャー プロファイルと構成マネージャーの組み合わせの原因を突き止めることができました。

構成マネージャーには、ステージング構成用の 3 つの "アクティブなソリューション プラットフォーム" がありました。すべての CPU、混合プラットフォーム、および x86 です。私のステージング構成マネージャーのデフォルト ビューは、すべてステージング構成に設定された混合プラットフォームでした。パブリッシャー プロファイルの作成に行ったとき、最初は無意識のうちにリリース構成を使用していた [Staging - Any CPU] を選択していました。構成マネージャーでプラットフォームの変更を開始すると、問題が明らかになり、ソリューション内のすべての構成/プラットフォームの組み合わせに対して適切に構成を設定することができました。

簡単に言うと、公開する構成でアクティブな各ソリューション プラットフォーム (ドロップダウンで変更) を確認し、構成マネージャーで各プロジェクトが正しい構成を使用していることを確認してください。さらに、パブリッシャー プロファイルが正しい構成/プラットフォームの組み合わせを使用していることを確認してください。

于 2013-08-27T19:09:33.550 に答える