【VB.NET】Windows Form에서 설정값을 Debug와 Release로 전환하고 싶다
8970 단어 VisualStudioVB. 네 t
Visual Studio 2017
실패: ASP.NET에서 App.config를 전환하는 기능 사용
ASP.NET에서는 빌드 구성에 맞게 App.config를 전환하는 기능이 있지만 Windows Form에는 없다.
검색하면 Windows 앱에서도 ASP.NET의 기능을 유용하고 config 파일을 대체하는 수단을 찾을 수 있습니다.
App.config를 빌드 대상으로 다시 작성 - Qiita
그러나 실제로 해봐도 빌드 후의 config 파일이 바뀌지 않는다.<appSettings>
태그도 「설정」관련의 어느 쪽도 바꾸지 않고.
Settings 파일을 2개 만들고 빌드시 구성에 따라 전환하려고 했지만 그것도 안 됐다.
<None Include="Settings.Debug.settings" Condition=" '$(Configuration)' == 'Debug' ">
<Generator>SettingsSingleFileGenerator</Generator>
</None>
<None Include="Settings.Release.settings" Condition=" '$(Configuration)' == 'Release' ">
<Generator>SettingsSingleFileGenerator</Generator>
</None>
condition 속성이 유효하게 되지 않고, 파일명=클래스명이 되어 버리므로 치환되어 있지 않다.
프로젝트 바로 아래에 Debug와 Release의 폴더를 만들고 같은 Settings1.settings라는 파일을 만들어 보았을 때 서로 충돌하고 app.config와 settings 파일을 덮어 쓰고 버린다.
빌드 후 스크립트에서 config 파일의 내용 바꾸기
Visual Studio에는, 빌드 전, 빌드 후에 실행시키고 싶은 것을 지정할 수 있다.
방법: 빌드 이벤트 지정(Visual Basic) - Visual Studio | Microsoft Docs
이것을 사용해, 빌드 후에 config 파일을 옮겨놓는 처리를 자작했다.
config 파일 준비
원본 App.config와 구성별 config 파일을 준비합니다.
3개가 늘어서는 것이 귀찮다면, vbproj 파일을 만지면 다음과 같이 할 수 있다.
vbproj 파일 발췌<Content Include="App.config">
<SubType>Designer</SubType>
</Content>
<Content Include="App.Debug.config">
<DependentUpon>App.config</DependentUpon>
<SubType>Designer</SubType>
</Content>
<Content Include="App.Release.config" >
<DependentUpon>App.config</DependentUpon>
<SubType>Designer</SubType>
</Content>
PowerShell에서 config 파일의 내용 덮어쓰기
.NET에는 config 파일을 읽고 쓰기 위한 클래스 등이 준비되어 있지만, 「설정」의 부분은 취급할 수 없기 때문에, 보통의 XML 파일로서 읽고 쓰기한다.
↓ appSettings
태그 밖에 사용하지 않는 경우 유용한 방법.
PowerShell에서 응용 프로그램 구성 파일 (app.config) 읽기 및 쓰기 - 잠시 기술 블로그
App.config를 XML 파일로 읽고 아래에 둘러싸인 부분을 읽고 바꿉니다.
PowerShell에 전달하는 매개 변수로 다음이 필요합니다.
<None Include="Settings.Debug.settings" Condition=" '$(Configuration)' == 'Debug' ">
<Generator>SettingsSingleFileGenerator</Generator>
</None>
<None Include="Settings.Release.settings" Condition=" '$(Configuration)' == 'Release' ">
<Generator>SettingsSingleFileGenerator</Generator>
</None>
Visual Studio에는, 빌드 전, 빌드 후에 실행시키고 싶은 것을 지정할 수 있다.
방법: 빌드 이벤트 지정(Visual Basic) - Visual Studio | Microsoft Docs
이것을 사용해, 빌드 후에 config 파일을 옮겨놓는 처리를 자작했다.
config 파일 준비
원본 App.config와 구성별 config 파일을 준비합니다.
3개가 늘어서는 것이 귀찮다면, vbproj 파일을 만지면 다음과 같이 할 수 있다.
vbproj 파일 발췌
<Content Include="App.config">
<SubType>Designer</SubType>
</Content>
<Content Include="App.Debug.config">
<DependentUpon>App.config</DependentUpon>
<SubType>Designer</SubType>
</Content>
<Content Include="App.Release.config" >
<DependentUpon>App.config</DependentUpon>
<SubType>Designer</SubType>
</Content>
PowerShell에서 config 파일의 내용 덮어쓰기
.NET에는 config 파일을 읽고 쓰기 위한 클래스 등이 준비되어 있지만, 「설정」의 부분은 취급할 수 없기 때문에, 보통의 XML 파일로서 읽고 쓰기한다.
↓
appSettings
태그 밖에 사용하지 않는 경우 유용한 방법.PowerShell에서 응용 프로그램 구성 파일 (app.config) 읽기 및 쓰기 - 잠시 기술 블로그
App.config를 XML 파일로 읽고 아래에 둘러싸인 부분을 읽고 바꿉니다.
PowerShell에 전달하는 매개 변수로 다음이 필요합니다.
샘플 스크립트(일부)
Param($targetAppConfigPath, $sourceAppConfigPath, $outputPath, $projectName)
Add-Type -AssemblyName System.Configuration
if (!(Test-Path $targetAppConfigPath) -or !(Test-Path $sourceAppConfigPath)) {
return
}
# ファイル読込
[xml]$targetAppConfig = Get-Content $targetAppConfigPath -Encoding UTF8
[xml]$sourceAppConfig = Get-Content $sourceAppConfigPath -Encoding UTF8
function main() {
copySettings "configuration/applicationSettings/$projectName.My.MySettings"
copySettings "configuration/userSettings/$projectName.My.MySettings"
copyConnectionStrings "configuration/connectionStrings"
copyAppConfigs "configuration/appSettings"
$targetAppConfig.Save($outputPath)
}
PowerShell을 프로젝트에 배치
프로젝트에 ps1 파일을 넣습니다. 샘플에서는 "BuildScripts"폴더에 넣었다.
PowerShell 빌드 후 실행
프로젝트 속성을 열고 컴파일 탭에서 빌드 이벤트를 누릅니다.
다음 명령은 빌드 후 명령에 추가됩니다.
powershell -NoProfile -ExecutionPolicy Unrestricted -file "$(ProjectDir)BuildScripts\ReplaceSettings.ps1" "$(ProjectDir)App.config" "$(ProjectDir)App.$(ConfigurationName).config" "$(TargetDir)$(TargetFileName).config" $(ProjectName)
일반적으로, PowerShell을 호출할 때
-file
는 없어도 좋을 것이지만, 여기에서는 붙이지 않으면 에러가 된다.그러면 출력 폴더에 각 구성의 설정 값이 출력됩니다.
이 스크립트를 사용한 샘플을 GitHub에 보관했습니다.
htps : // 기주 b. 코 m / ゔ ぃ く な パコ s / vb
Reference
이 문제에 관하여(【VB.NET】Windows Form에서 설정값을 Debug와 Release로 전환하고 싶다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/vicugna-pacos/items/e63b0c7f1edbf3f6cb72텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)