그물 모양구성 변환 - 최종 구문 안내서

13961 단어 csharpiisaspnetdotnet
Visual Studio 2010이 이 동네에서 가장 멋진 아이가 되었을 때, 모든 사람들이 새로운 네트워크에 대해 이야기하고 있었다.변환 기능을 구성합니다.변환 의도는 당시에는 약간 다르지만 ASP에 대해서는.NET, MVC 및 웹 API 프로젝트이 문장에서, 나는 너희들이 알아야 할 인터넷에 관한 모든 것을 설명할 것이다.웹 프로젝트에서 전환을 실현할 때 전환을 설정하고 최적(과 최악) 실천을 거친다.
그럼 인터넷이 뭐예요?변환 구성?대부분의 응용 프로그램은 여러 환경과 여러 설정에서 실행되어야 한다.모든 사람은 최소한 로컬 웹 서버와 생산 환경이 있어야 한다.데이터베이스에 연결하려면 두 환경의 연결 문자열이 달라야 합니다.너는 인터넷을 사용할 수 있다.이 점을 실현하기 위해 변환을 설정합니다.
다른 환경을 사용하여 웹을 해석합니다.설정 전환은 결코 가장 좋은 예가 아니다.그러나 대다수의 문장이 이 예를 사용하는 것은 주로 이해하기 쉽고 문장이 낡기 때문이다.세상에 이렇게 많은 일이 일어났다.NET 도구 공간.Azure DevOps와 Octopus Deploy 등 도구는 우리가 여러 환경에서 응용 프로그램을 설정하고 배치하는 방식을 크게 향상시켰다.
변환을 설명하기 위해서, 나는 또 다른 예시를 사용할 것이다. 해결 방안 설정이다.사용 가능한 모든 디버깅과 발표 설정을 알고 있을 수도 있습니다.NET 프로젝트.NET는 이 두 가지 설정을 여러 가지 목적에 사용합니다. 예를 들어 코드 최적화와 발표 모드에서 실행할 때 원본 코드 정보를 배제합니다.솔루션 구성도 변환에 사용할 수 있습니다.설정 기반 전환 설정은 전환의 완벽한 사용입니다.
그물 모양구성 변환은 XML 문서 변환(XDT)이라는 태그 언어를 사용하여 수행됩니다.XDT는 Microsoft가 개발한 XML 기반 문서 형식으로 웹에 대한 변경 사항을 설명합니다.프로필지정한 이름으로 요소를 바꾸시겠습니까?XDT는 이것을 할 수 있다.다른 요소 아래에 요소를 삽입하시겠습니까?XDT는 니 친구야.속성 값을 로 바꾸려면...그래, 알았어.
코드 좀 봅시다.웹을 변환합니다.구성 파일은 기존 Web.*Configuration*.config 파일 옆에 Web.config 이라는 파일을 지정합니다.프로젝트에 이미 Web.release.config 라는 파일이 있을 수 있으므로 다음과 같이 구성합니다.
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <system.web>
    <compilation xdt:Transform="RemoveAttributes(debug)" />
  </system.web>
</configuration>
모든 XDT 문서는 루트 요소에 이름 공간을 선언해야 합니다.위의 예는 debug 요소 아래에 있는 compilation 요소에서 system.web 속성을 삭제합니다.이것은 xdt:Transform 속성을 사용하여 완성한 것입니다.이 값은 여러 값 중 하나일 수 있지만 이 예에서는 RemoveAttribute(debug) 입니다.SetAttributes, Replace, InsertBefore도 유행하는 옵션이다.
위의 예에서는 전체 XML 구조(configuration->system.web->compilation->appSettings을 선언하여 속성을 쉽게 찾을 수 있습니다.더 복잡한 구조로 기존 태그를 수정하려면 다른 XDT 속성을 사용할 수 있습니다.가장 일반적인 예는 다른 값으로 대체하는 것이다isProd.
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <appSettings>
    <add key="isProd" value="true" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
  </appSettings>
</configuration>
예제 XDT는 true 응용 프로그램에서 설정한 값을 configuration 로 대체합니다.처음에는 XDT를 이해하기가 좀 어려울 것 같습니다.변환이 어떻게 작동하는지 설명하기 위해서 우리는 XML을 한 걸음 한 걸음 연구합시다.
  • XDT는 XML에서 수정할 appSettings 요소를 찾습니다.
  • 그리고 add 요소를 찾습니다.
  • 그리고 add 요소를 찾습니다(여러 개 있을 수 있음).
  • 그리고 key 원소를 찾았는데 그 중에서 isProd 속성은 isProd 과 같다.
  • 마지막으로, true 업데이트 Web.config 의 값을 사용합니다.
  • 나는 당신이 전환의 작업 원리를 더욱 잘 이해할 수 있기를 바랍니다.XDT 변환의 더 많은 예시를 작성하는 데 있어서 본고의 마지막 장은 내가 elmah.io 에서 사용하거나 사용하고 있는 흔한 장면의 어셈블리이다.
    전환을 이해하는 가장 좋은 방법은 본고의 마지막 장에서 흔히 볼 수 있는 임무를 보는 것이다.우리가 예시를 계속 토론하기 전에, 많은 일들이 이해할 만하다.

    응용 프로그램.프로파일


    지금까지 우리는 App.config 개의 문건만 토론했다.그래서 Web.config 파일도 지원됩니까?모든 사람이 알고 있는 것은 아니다 App.configApp.config 파일은 사실상 두 가지 다른 파일 유형으로 서로 다른 사람이 유지한다 (적어도 나는 이 점을 들어 본 적이 있다). 그러나 그것들은 같은 요소를 가지고 있다.이것은 App.config 파일이 상자를 열면 바로 사용할 수 없다는 것을 의미한다.
    다행히도 세이드 이블라신 하시미(Sayed Ibrahim Hashimi)는 XDT 변환의 확장자를 작성했다. 이를 슬로우 치타(Slow Cheetah)라고 하는데, 이 확장자는 Web.config 개의 파일도 변환할 수 있다.실제로 Slow Cheetah는 모든 XML 파일을 처리할 수 있습니다. 이것은 다른 유형의 프로필, 예를 들어 Entity Framework와 NHibernate에서 온 프로필을 변환하는 데 적합합니다.
    Slow Cheetah를 출시한 이래로 마이크로소프트는 이 도구를 사용하고 이를 Visual Studio의 확장으로 삼았다.이 도구는 NuGet 패키지로도 제공되며 파이프 구축의 일부로 사용할 수 있습니다.여기서 주의해야 할 점은 Cheetah는 컴파일할 때 느리게 실행되고, Web.config 변환은 배치할 때 실행된다는 것이다.
    XML 파일의 변환을 시작하려면App.config 파일이 이미 내장되어 있으므로 SlowCheetah 패키지를 설치합니다.Visual Studio를 다시 시작한 후 파일을 마우스 오른쪽 버튼으로 클릭하면 변형 추가 옵션이 표시됩니다.

    SlowCheetah는 생성할 때 파일을 변환하기 위해 NuGet 패키지를 설치해야 합니다.먼저 Visual Studio 패키지를 설치하는 데 유용한 기능은 다음과 같습니다.

    아름답다Yes 를 클릭하면 SlowCheetah가 필요한 NuGet 패키지를 자동으로 설치하고 프로젝트 파일을 수정합니다.
    <ItemGroup>
      <None Include="App.config">
        <TransformOnBuild>true</TransformOnBuild>
      </None>
      <None Include="App.Debug.config">
        <DependentUpon>App.config</DependentUpon>
        <IsTransformFile>true</IsTransformFile>
      </None>
      <None Include="App.Release.config">
        <DependentUpon>App.config</DependentUpon>
        <IsTransformFile>true</IsTransformFile>
      </None>
    </ItemGroup>
    
    주의IsTransformFile원소, 이것이 바로 신기한 곳이다.설치된 NuGet 패키지를 사용하면 선택한 구성에 따라 SlowCheetahApp.config 파일이 자동으로 변환됩니다.
    두 개의 새 XDT 파일이 App.config 파일 아래에 중첩됩니다.

    지능 감지


    Visual Studio는 자주 사용하는 원본 파일 형식이 강력한 지능적 감지를 제공하는 것으로 유명합니다.XDT 변환은 Web/App.config 네임스페이스를 포함하는 xdt 파일로 Visual Studio가 변환 파일에서 같은 경험을 제공할 수 있음을 의미합니다.여기에는 xdt: 속성에 대한 지능적 감지도 포함됩니다.

    안타깝게도 IntelliSense는 속성 값을 작성하는 데 도움이 되지 않습니다.이를 위해서는 경험, 문서, 그리고 이 강좌와 유사한 강좌가 필요합니다.XDT 문제를 디버깅하는 데 도움을 주는 좋은 방법 중 하나는 SlowCheetah를 설치하는 것입니다. 위에서 말한 바와 같습니다.파일 변환을 마우스 오른쪽 버튼으로 클릭하면 SlowCheetah가 Visual Studio에 미리 보기 명령을 실행합니다.XDT 파일을 미리 보고 기존 XML 파일을 수정하는 방법을 정확하게 표시합니다.

    Visual Studio에서 변경 사항을 미리 보는 또 다른 방법은 내가 구축한 온라인 도구를 사용하는 것이다.Web.config Transformation Tester.이 도구는 SlowCheetah와 유사한 diff를 생성합니다.

    Visual Studio 플러그인


    우리는 XDT의 전환을 돕는 우수한 플러그인에 대해 토론했다.또 몇 가지 유용한 플러그인을 사용할 수 있습니다.
    구성 변환 - https://marketplace.visualstudio.com/items?itemName=GolanAvraham.ConfigurationTransform
    Goland Avraham은 Slow Cheetah를 대체하는 방법을 제공합니다. 모든 환경이 설정된 상황에서 이런 방법은 더욱 잘 작동할 수 있습니다.
    파일 중첩 - https://marketplace.visualstudio.com/items?itemName=MadsKristensen.FileNesting
    Mads Kristensen은 Visual Studio에서 파일을 서로 끼워 넣을 수 있는 훌륭한 플러그인을 만들었습니다.나는 XDTtransform 파일을 정확하게 끼워 넣을 때 몇 가지 문제를 만났다. 이런 문제들을 해결하는 것은 파일 끼워 넣는 데 있어서 식은 죽 먹기이다.

    일반 작업


    이것은 웹을 통해 실현할 수 있는 흔한 임무의 집합이다.변환을 구성합니다.

    appSetting/connectionString 요소 추가


    <configuration xmlns:xdt="...">
      <appSettings>
        <add key="Hello" value="world" xdt:Transform="Insert" />
      </appSettings>
    </configuration>
    

    appSetting/connectionString 값 업데이트


    <configuration xmlns:xdt="...">
      <appSettings>
        <add key"Hello" value="World" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
      </appSettings>
    </configuration>
    

    복잡한 요소 삽입하기


    <configuration xmlns:xdt="...">
      <system.webServer>
        <rewrite>
          <rules xdt:Transform="Insert">
            <rule name="RedirectToHTTPS" stopProcessing="true">
              <match url="(.*)" />
              <conditions>
                <add input="{HTTPS}" pattern="off" ignoreCase="true" />
              </conditions>
              <action type="Redirect" url="https://{SERVER_NAME}/{R:1}" redirectType="Permanent" />
            </rule>
          </rules>
        </rewrite>
      </system.webServer>
    </configuration>
    

    속성 삭제


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

    컴포넌트 교체


    <configuration xmlns:xdt="..."> 
      <system.web xdt:Transform="Replace"> 
        ... 
      </system.web> 
    </configuration>
    

    사용자가 더 적은 오류를 원하십니까?


    엘마.io는 간단한 오류 기록과 정상적인 운행 시간 감시 서비스입니다.순액모든 사람에 대한 지원을 통해 오류를 다시 제어합니다.NET 웹 및 로그 프레임워크
    ➡️ Error Monitoring for .NET Web Applications ⬅️
    이 문장은 먼저 《elmah》에 나타났다.io 블로그https://blog.elmah.io/web-config-transformations-the-definitive-syntax-guide/

    좋은 웹페이지 즐겨찾기