Сеть.Конфигурация Отладка Или Выпуск


Я знаю эту паутину.конфигурация в Visual Studio 2010 предоставляет возможность переключаться из режима отладки в режим выпуска баз данных.

вот моя паутина.Освобождать.config:

<?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">

  <connectionStrings>
    <add name="ApplicationServices" connectionString="data source=.SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
      providerName="System.Data.SqlClient" />
    <add name="Testing1" connectionString="Data Source=test;Initial Catalog=TestDatabase;Integrated Security=True"
      providerName="System.Data.SqlClient" />
  </connectionStrings>

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

</configuration>

вот моя паутина.Отлаживать.код конфигурации:

<?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">

  <connectionStrings>
    <add name="ApplicationServices" connectionString="data source=.SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
      providerName="System.Data.SqlClient" />
    <add name="Live1" connectionString="Data Source=Live;Initial Catalog=LiveDatabase;Integrated Security=True"
      providerName="System.Data.SqlClient" />
  </connectionStrings>

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

</configuration>

а это моя паутина.код конфигурации:

<?xml version="1.0"?>

<!-- For more information on how to configure your ASP.NET application, please visit http://go.microsoft.com/fwlink/?LinkId=169433 -->
<configuration>

  <system.web>
    <compilation debug="true" targetFramework="4.0" />

    <authentication mode="Forms">
       <forms loginUrl="~/Account/Login.aspx" timeout="2880" />
    </authentication>

    <membership>
       <providers>
          <clear/>
          <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices"
         enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
         maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
         applicationName="/" />
       </providers>
    </membership>

    <profile>
       <providers>
          <clear/>
          <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/>
       </providers>
    </profile>

    <roleManager enabled="false">
       <providers>
          <clear/>
          <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" />
    <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
       </providers>
    </roleManager>

  </system.web>

  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
</configuration>

когда я публикую свой проект, в моей Сети ничего не отображается.config file.it не показывает мое соединение с живой базой данных струна?

4 72

4 ответа:

веб.преобразования конфигурации, которые являются частью Visual Studio 2010, используют XSLT для" преобразования " текущего веб-сайта.конфигурационный файл в свой .Отладка или .Версия.

В вашей .Отлаживать./Отпустите файлы, вам нужно добавить следующий параметр в поля строки подключения:

xdt:Transform="SetAttributes" xdt:Locator="Match(name)"

это приведет к тому, что каждая строка строки подключения найдет соответствующее имя и соответствующим образом обновит атрибуты.

Примечание: вам не придется беспокоиться об обновлении ваш параметр providerName в файлах преобразования, так как они не изменяются.

вот пример из одного из моих приложений. А вот и паутина.раздел файла конфигурации:

<connectionStrings>
      <add name="EAF" connectionString="Data Source=NTSQLT\S2K5TST;Initial Catalog=HR;User ID=EAFApp;Password=XXXX" providerName="System.Data.SqlClient" />
</connectionString>

а вот и паутина.конфиг.раздел выпуска делает правильное преобразование:

<connectionStrings>
      <add name="EAF" connectionString="Data Source=NTSQLP\S2K5TST;Initial Catalog=HR;User ID=EAFApp;Password=YYYY" xdt:Transform="SetAttributes" xdt:Locator="Match(name)" />
</connectionStrings>

одно добавленное Примечание: преобразования происходят только при публикации сайта, а не когда вы просто запускаете его с помощью F5 или CTRL+F5. Если вам нужно запустить обновление для данной конфигурации локально, у вас будет чтобы вручную изменить свой веб.конфигурационный файл для этого.

для получения более подробной информации вы можете увидеть документацию MSDN

https://msdn.microsoft.com/en-us/library/dd465326 (VS. 100). aspx

можно использовать ConfigTransform цель сборки доступна в виде пакета Nuget -https://www.nuget.org/packages/CodeAssassin.ConfigTransform/

все " web.*.конфигурация" преобразовать файлы будут преобразованы и выведены в виде серия "сети.*.конфиг.преобразованные " файлы в выводе сборки каталог независимо от выбранной конфигурации сборки.

то же самое относится к "приложение.*.config " преобразование файлов в не-web проекты.

а затем добавить следующую цель в ваш *.csproj.

<Target Name="TransformActiveConfiguration" Condition="Exists('$(ProjectDir)/Web.$(Configuration).config')" BeforeTargets="Compile" >
    <TransformXml Source="$(ProjectDir)/Web.Config" Transform="$(ProjectDir)/Web.$(Configuration).config" Destination="$(TargetDir)/Web.config" />
</Target>

публикация ответа, поскольку это первое сообщение Stackoverflow, которое появляется в Google по этому вопросу.

чтобы преобразование работало в разработке (используя F5 или CTRL + F5), я отбрасываю ctt.exe (https://ctt.codeplex.com/) в папке packages (packages\ConfigTransform\ctt.исполняемый.)

затем я регистрирую событие до или после сборки в Visual Studio...

$(SolutionDir)packages\ConfigTransform\ctt.exe source:"$(ProjectDir)connectionStrings.config" transform:"$(ProjectDir)connectionStrings.$(ConfigurationName).config" destination:"$(ProjectDir)connectionStrings.config"
$(SolutionDir)packages\ConfigTransform\ctt.exe source:"$(ProjectDir)web.config" transform:"$(ProjectDir)web.$(ConfigurationName).config" destination:"$(ProjectDir)web.config"

для преобразований я использую SlowCheeta VS extension (https://visualstudiogallery.msdn.microsoft.com/69023d00-a4f9-4a34-a6cd-7e854ba318b5).

Если вы собираетесь заменить все строки подключения С новостями для производственной среды вы можете просто заменить все строки подключения на производственные, используя этот синтаксис:

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

<connectionStrings xdt:Transform="Replace">
    <!-- production environment config --->
    <add name="ApplicationServices" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true"
      providerName="System.Data.SqlClient" />
    <add name="Testing1" connectionString="Data Source=test;Initial Catalog=TestDatabase;Integrated Security=True"
      providerName="System.Data.SqlClient" />
</connectionStrings>
....

информация для этого ответа берется из ответ и этот блог.

обратите внимание: как уже объясняли другие, этот параметр будет применяться только тогда, когда приложение не публикует при запуске / отладке его (нажав F5).