[visual-studio-2010] 내장 된 Visual Studio 디버거 서버에서 Web.debug.config를 어떻게 사용할 수 있습니까?

Web.debug.configVisual Studio 2010 기본 제공 디버거에서 어떻게 병합하고 사용할 수 있습니까?



답변

이것은 알려진 버그입니다. 이 기능은 지금 배포 프로세스의 일부로 만 사용할 수 있습니다.

https://connect.microsoft.com/VisualStudio/feedback/details/523221/have-web-debug-config-apply-during-development

이것도 만난다면 그것을 찬성하십시오, 그래서 이것은 최대한 빨리 해결 될 것입니다.


답변

이것은 실제로 매우 간단하며 믿거 나 말거나 이것이 VS가 작동하도록 설계된 방식 인 것 같습니다.

web.config가 포함 된 프로젝트의 .csproj 파일에서 닫는 “Project”태그 바로 앞에 다음 줄을 그대로 추가합니다.

<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Web\Microsoft.Web.Publishing.Tasks.dll" />
<Target Name="Transform">
    <MakeDir Directories="obj\$(Configuration)" Condition="!Exists('obj\$(Configuration)')" />
    <TransformXml Source="Web.Config" Transform="Web.$(Configuration).config" Destination="obj\$(Configuration)\Web.config" StackTrace="true" />
</Target>

web.config 파일이 포함 된 프로젝트의 프로젝트 속성에서 빌드 후 이벤트에 다음 줄을 그대로 입력합니다. 변환을 실행할 각 빌드 구성에 대해이 작업을 수행하십시오.

"$(MSBUILDBINPATH)\msbuild" "$(ProjectPath)" /t:Transform /p:Configuration=$(ConfigurationName);Platform=AnyCPU
xcopy "$(ProjectDir)obj\$(ConfigurationName)\Web.Config" "$(ProjectDir)". /F /R /Y


답변

태그 바로 앞의 .csproj 파일 끝에 이것을 추가하여 더 간단한 방법으로이 문제를 해결했습니다. 이것은 빌드 후 이벤트를 사용하지 않는다는 차이점을 제외하고 keitn의 답변과 유사합니다.

<Target Name="BeforeBuild">
    <TransformXml Source="Web.config" Transform="Web.$(Configuration).config" Destination="Web.config" />
</Target>


답변

내 프로젝트의 web.config를 bin 폴더에서 끝나는 것만 업데이트하고 싶지 않았으므로 여기에 내가 한 방법입니다.

.csproj 끝에 다음을 추가합니다 (최종 종료 프로젝트 태그 바로 앞).

<Target Name="Transform">
    <MakeDir Directories="bin" Condition="!Exists('bin')" />
    <TransformXml Source="Web.Config" Transform="Web.$(Configuration).config" Destination="bin\$(TargetFileName).config" StackTrace="true" />
  </Target>

그런 다음 다음 빌드 후 단계를 추가하십시오.

"$(MSBUILDBINPATH)\msbuild" "$(ProjectPath)" /t:Transform /p:Configuration=$(ConfigurationName);Platform=AnyCPU

즉, 빌드 할 때 디버그 / 릴리스 구성에서 출력 bin 디렉토리의 WebsiteName.Config 파일로 변환이 발생하므로 프로젝트의 기본 web.config를 방해하지 않습니다.


답변

많은 유사한 게시물을 읽고 파일을 덮어 쓸 수 없거나 읽기 전용이기 때문에 web.config에 액세스 할 수없는 문제가 발생한 후 이것이 저를 위해 일한 것입니다.

  <Target Name="BeforeBuild" Condition="$(Configuration) == 'MyAltDebugConfiguration'">
    <ItemGroup>
      <OriginalWebConfig Include="$(ProjectDir)Web.config"/>
      <TempWebConfig Include="$(ProjectDir)TempWeb.config"/>
    </ItemGroup>
    <Exec Command="&quot;$(DevEnvDir)tf.exe&quot; checkout &quot;$(ProjectDir)Web.config&quot;" />
    <Copy SourceFiles="@(OriginalWebConfig)" DestinationFiles="@(TempWebConfig)" />
    <TransformXml Source="$(ProjectDir)TempWeb.config"
                            Transform="Web.$(Configuration).config"
                            Destination="Web.config" />
  </Target>

메모:

이것은 BeforeBuild 대상으로 실행됩니다.

특정 구성 (대체 디버그 환경)에서만 실행되기를 원하기 때문에 Condition이 있습니다. 웹 배포를 통해 배포 할 때 게시 대상이 시작되고이 대상을 실행할 필요가 없습니다.

web.config를 확인하는 것을 기억하고 싶지 않기 때문에 (완료되었을 때만 실행 취소하기 위해) 변환을 시작하기 전에 web.config를 확인합니다. TFS를 사용하지 않는 경우이 줄을 제거 할 수 있습니다.

VS (2010) \ msbuild는 소스 web.config를 버리고 싶지 않기 때문에 임시 파일을 사용합니다 (이 기사에 대한 정보 : http://www.diaryofaninja.com/blog/2011/09/ 14 / msbuild에서 사용자 지정 웹 구성 변환 사용 )

TempWeb.config를 삭제하는 명령을 추가하려고했지만 VS \ msbuild는 그것을 놓치고 싶지 않습니다. TFS에 추가되지 않기 때문에 함께 살 수 있습니다.


답변

나는 이것이 오래되었다는 것을 알고 있지만 동일한 문제에 직면하고 있습니다. 기본 Web.config에서 끝점, 연결 문자열 등을 대체하는 테스트, 준비, 라이브 구성이 있습니다.

그러나 다음을 수행합니다.

  • 원하는 변환 구성 (예 : Web.Live.config )을 마우스 오른쪽 버튼으로 클릭합니다.
  • “Preview Transform”을 클릭합니다.
  • 모든 것을 오른쪽에서 복사합니다 (변환과 함께 Web.config가 표시되는 방식).
    • CTRL + A + CTRL + C
  • Web.config 파일 열기 (기본값)
  • 모두 선택 (CTRL + A)하여 붙여 넣기 (CTRL + V)
  • 운영

그다지 많은 단계가 아니며 익숙해지면 꽤 빨리 완료됩니다. 도움이 되었기를 바랍니다. 🙂


답변

@ologesa : 솔루션에는 원본 Web.config에 대한 쓰기 액세스 권한이 필요합니다 (TFS에서 체크 아웃해야 함). 더 나은 해결책은 keitn이하는 것처럼 bin 폴더에 Web.config를 직접 생성하는 것입니다. keitn과 귀하의 솔루션을 결합하면 다음과 같은 결과를 얻을 수 있습니다.

<Target Name="BeforeBuild">
    <Message Text="Transforming Web.config from Web.$(Configuration).config" Importance="high" />
    <MakeDir Directories="bin" Condition="!Exists('bin')" />
    <TransformXml Source="Web.Config" Transform="Web.$(Configuration).config" Destination="bin\$(TargetFileName).config" StackTrace="true" />
</Target>