44

MVC 3.0 プロジェクトでこの奇妙な断続的なバグが発生しています。プロジェクトをビルドすると、次のエラー メッセージが表示されることがあります。

認識されない属性 'xmlns:xdt'。属性名は大文字と小文字が区別されることに注意してください。

これは、標準の web.config 変換ファイル (以下にコピーされた Web.Release.config) を参照しています。その他のエラーや警告はありません。これは、デバッグ モードとリリースで発生しています。溶液をきれいにすると時々クリアされます

更新を開始

問題が見つかりました。MVC プロジェクト ファイル (MyProject.csproj) で、ビルド ビューを true に設定しました。

<MvcBuildViews>true</MvcBuildViews>

falseに戻すと、上記のエラーはなくなります。ビューをビルドして、多くの愚かなビュー コード エラーなどを停止し、パフォーマンスを向上させたいと思います (ページは jit ではなくプリコンパイルされます)。

これがエラーの原因を知っている人はいますか?これはバグですか?

更新を終了

<?xml version="1.0"?>

<!-- For more information on using Web.config transformation visit http://go.microsoft.com/fwlink/?LinkId=125889 -->

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <!--
    In the example below, the "SetAttributes" transform will change the value of 
    "connectionString" to use "ReleaseSQLServer" only when the "Match" locator 
    finds an atrribute "name" that has a value of "MyDB".

    <connectionStrings>
      <add name="MyDB" 
        connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True" 
        xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
    </connectionStrings>
  -->
  <system.web>
    <compilation xdt:Transform="RemoveAttributes(debug)" />
    <!--
      In the example below, the "Replace" transform will replace the entire 
      <customErrors> section of your Web.config file.
      Note that because there is only one customErrors section under the 
      <system.web> node, there is no need to use the "xdt:Locator" attribute.

      <customErrors defaultRedirect="GenericError.htm"
        mode="RemoteOnly" xdt:Transform="Replace">
        <error statusCode="500" redirect="InternalError.htm"/>
      </customErrors>
    -->
  </system.web>
</configuration>
4

11 に答える 11

78

私はまったく同じ問題に遭遇しました。MvcBuildViews やさまざまなエラー状態に関連する冗談がたくさんあります。しかし、誰もこの特定のエラーについて言及していないようです。私にとってうまくいった簡単な修正は、影響を受ける Web プロジェクトの「obj」ディレクトリの内容を削除してから再構築することでした。

于 2012-11-16T16:24:17.390 に答える
31

これは一種の回避策ですが、ビルド前のコマンドに次の行を追加できます。

del $(ProjectDir)obj\* /F /S /Q

プロジェクトを右クリック > プロパティ > ビルド イベント > ビルド前

于 2013-01-11T13:51:36.993 に答える
2

私は、ヨブが言ったのと同じことをすることで、自分の葛藤を解決します。属性の削除

xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"

メインの Web.config から、Web.debug.config と Web.release.config に残します。

于 2013-12-20T16:02:13.313 に答える
0

私もこれを見たことがあります。具体的には、Visual Studio でビルド構成を変更すると再現可能でした。

以前の私の回避策は、\objフォルダー内のすべてを削除することでしたが、web.config を詳しく調べたところ、要素の外側に誤ったテキストが含まれていることがわかりました (つまり、無効な XML でした)。

どうやら、構成変換は、変換を実行しようとしたときに例外を飲み込んでいたようです。

web.config が有効になるように修正し、すべてが期待どおりに機能するようになりました。

これが誰かを助けることを願っています

于 2014-08-17T10:42:55.177 に答える
0

web.configで以下を変更するだけです

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">

<configuration>

問題を修正しました

于 2015-02-12T12:03:13.420 に答える
0
  1. プロジェクトを右クリックし、[発行] をクリックします。
  2. 設定に移動->ファイル公開オプション
  3. 公開中にプリコンパイルのチェックを外す

これにより、ビジュアル スタジオ パブリッシュを使用している場合、web.debug.config/web.release.config がファイルを web.config に挿入し直すことができなくなります。

于 2016-02-13T21:18:44.890 に答える
0

私はこれが私にとってよりうまく機能することを発見しました:

del "$(ProjectDir)obj\*" /F /Q
del "$(ProjectDir)obj\$(ConfigurationName)\AspnetCompileMerge\*" /F /S /Q
del "$(ProjectDir)obj\$(ConfigurationName)\CSAutoParameterize\*" /F /S /Q
del "$(ProjectDir)obj\$(ConfigurationName)\Package\*" /F /S /Q
del "$(ProjectDir)obj\$(ConfigurationName)\ProfileTransformWebConfig\*" /F /S /Q
del "$(ProjectDir)obj\$(ConfigurationName)\TempPE\*" /F /S /Q
del "$(ProjectDir)obj\$(ConfigurationName)\TransformWebConfig\*" /F /S /Q

edmxResourcesToEmbedそれ以外の場合、ビルドは消えると文句を言います。

于 2013-06-21T15:05:08.173 に答える