Web.debug.config
Visual Studio 2010 기본 제공 디버거에서 어떻게 병합하고 사용할 수 있습니까?
답변
이것은 알려진 버그입니다. 이 기능은 지금 배포 프로세스의 일부로 만 사용할 수 있습니다.
이것도 만난다면 그것을 찬성하십시오, 그래서 이것은 최대한 빨리 해결 될 것입니다.
답변
이것은 실제로 매우 간단하며 믿거 나 말거나 이것이 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=""$(DevEnvDir)tf.exe" checkout "$(ProjectDir)Web.config"" />
<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>