Преобразование веб-конфигурации в microsoft.identityModel — атрибут «http://schemas.microsoft.com/XML-Document-Transform» не объявлен

У меня есть файл Web.Release.config, который успешно преобразует строку подключения.

Когда я добавляю раздел microsoft.identityModel, я получаю предупреждение о том, что

Атрибут http://schemas.microsoft.com/XML-Document-Transform не объявлен

И преобразование не работает в этом разделе.

Чего мне не хватает, чтобы заставить преобразование работать?

Заполните Web.Release.config здесь

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

  <connectionStrings>    

    <add name="MYNAME"
         connectionString="metadata=res://*/Models.MYCOMPANY-Sales-Demo.csdl|res://*/Models.MYCOMPANY-Sales-Demo.ssdl|res://*/Models.MYCOMPANY-Sales-Demo.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.;initial catalog=MYCOMPANYDemo;UID=MYCOMPANYDBUser;Password=********;multipleactiveresultsets=True;App=EntityFramework&quot;"         
         xdt:Transform="SetAttributes" xdt:Locator="Match(name)" />
  </connectionStrings>

  <system.web>
    <compilation xdt:Transform="RemoveAttributes(debug)" />
  </system.web>


  <microsoft.identityModel> 
    <service>
      <audienceUris>
        <add value="http://MYCOMPANY-sales-demo.cloudapp.net/" xdt:Transform="Replace"/>
      </audienceUris>
      <federatedAuthentication>
        <wsFederation realm="http://MYCOMPANY-sales-demo.cloudapp.net/" xdt:Transform="SetAttributes(realm)" />
      </federatedAuthentication>       
    </service>
  </microsoft.identityModel>

</configuration>

person Paul Rowland    schedule 15.12.2011    source источник
comment
Я тоже столкнулся с этим. Что безумно, так это то, что другие пользовательские разделы конфигурации не демонстрируют такого поведения (например, log4net). Это похоже на то, что он защищен от пользовательских пространств имен.   -  person Brandon Linton    schedule 04.01.2012
comment
Вы когда-нибудь заставляли это работать?   -  person Ben Tidman    schedule 18.01.2013


Ответы (2)


Я тоже столкнулся с этим, но заставил его работать. Что я сделал, так это «Удалить все» и «Вставить» вместо замены/совпадения:

<audienceUris>
    <add xdt:Transform="RemoveAll" />
    <add value="http://example.com/" xdt:Transform="Insert" />
</audienceUris>

Когда я делаю это таким образом, я получаю желаемое преобразование и выходной файл конфигурации.

person Steve    schedule 24.04.2012

Похоже, теперь это работает с Visual Studio 2012 (v4.5.50709). Я по-прежнему получаю предупреждение «атрибут не объявлен» в редакторе, но директива xdt:Transform="Replace" у меня работает.

person Rob VS    schedule 13.08.2013
comment
Это похоже на то же поведение в VS2015. - person ᴍᴀᴛᴛ ʙᴀᴋᴇʀ; 15.10.2015
comment
Я получаю ошибку только для одного атрибута в VS2015, все остальные (идентичные) атрибуты работают правильно. Похоже, предупреждение редактора можно смело игнорировать. - person vaindil; 22.07.2016
comment
Это верно. Предупреждение кажется неверным. Довольно неприятно, так как это, кажется, указывает на то, что вы делаете что-то не так. - person HaveSpacesuit; 13.07.2017