2009-12-04 4 views
17

C# 프로젝트를 컴파일하면 app.config의 응용 프로그램 설정이 exe 파일과 함께 저장됩니다. 예를 들어, 프로그램 이름이 "solve_np.exe"이면 "solve_np.exe.config"가 옆에있어 원하는 것보다 깔끔하게 보입니다. .exe에 어떻게 그것을 포함시킬 수 있습니까?어떻게 app.config를 C# 프로젝트에 포함 시키시겠습니까?

Build Action을 Embed Resource로 설정하려고 시도했지만 트릭을 수행하지 못했습니다.

답변

10

아하. 최종 사용자가 구성하지 말아야 할 구성에 자동으로 배치하는 Visual Studio의 파울에 빠지기 쉽습니다.

이 경우 리소스를 사용하십시오. 단순히 .resx 유형의 새 파일을 추가하십시오. 이를 통해 리소스 파일에 문자열과 이미지 같은 것을 추가 할 수 있습니다. 이것을 빌드 한 후에는 자원에 대한 정적 액세스를 제공해야합니다 (일반적으로 자원에서 코드 파일을 생성하므로 ResourceManager에 직접 액세스 할 필요가 없습니다).

E.G. 내가 빌드 후 MyConfigValue라는 문자열로 resources.resx 한 경우 나 액세스 할 수 있어야합니다 같은 :

textBox.Text = Resources.MyConfigValue; 

당신이 좀 변수이지만 구성하지 않아야 값을 원하는 경우 다음이 바로 이곳입니다 그들을 넣어.

HTH.

+0

저는 사람들을 화나게하지 않기 위해 질문을 다시 말했습니다. – Wamiduku

+0

화가 나지 않습니다. 나는 그저 전문가가 아니라고 생각하고 싶어합니다. 이것은 아마도 사람들이 (내가 포함 된) 귀하의 질문 뒤에있는 추론을 오해하고있는 핵심입니다. 어떤 종류의 데이터를 "config"파일에 저장하고 있습니까? – Quibblesome

+1

사용자가 설정을 변경할 필요가 없을 때 "덜 산뜻한"것 같은 것이 내가 "비 전문적"이 아니라 처음부터 작성 했어야하는 것입니다. 불명확 한 것에 대해 사과드립니다. .config 파일에서 끝나는 데이터는 생성 된 VS입니다. 일반적으로, 아론은 내가 말하고 싶은 것을 설명합니다. – Wamiduku

0

나는 serhio darasd와 Quibblesome에 동의하지만 "solve_np.exe.config"만 삭제하면 기본 구성이 사용됩니다.

6

exe와 함께 제공되는 app.config 파일을 가지고 있지 않은 경우 전문가가 아닌이 아닙니다. 나는 이라는 단어가 일 수 있다고 생각합니다. untidy입니다. 나는 개인적으로 이것은 모두가 다르다는 것을 스스로 발견하지 못한다! 아마도 기본적으로 app.config 파일을 숨기시겠습니까?

또 다른 대안은 App Data 폴더에 저장하거나 설정을 레지스트리에 저장할 수도있는 자신 만의 구성 파일을 만드는 것입니다.

+0

+1은 정말로 OP의 질문에 답하는 옵션으로 레지스트리를 제공합니다 (이 옵션을 매우 좋아하지는 않음). –

+3

.Net에는 기본적으로 app.config에 구성된 몇 가지 사항이 있지만 사용자가 변경할 필요가 없습니다. 예를 들어 Enterprise Library Cryptography 키 및 알고리즘과 같은 것들. 사용자가 app.config 파일을 잃어 버리고 exe를 깨는 것이 쉽기 때문에 exe 파일에 임베드하도록 선택할 수 있으면 좋을 것입니다. –

2

일반적으로 구성 파일의 이론은 응용 프로그램을 배포 한 후에 변경할 수있는 설정을 저장한다는 것입니다 (사용자 기본 설정과 같은 경우). 이렇게하려면 응용 프로그램의 외부에 저장해야합니다. 기본 설정을 사용하면 "[Your] .exe.config"가 나타납니다. 당신이 볼 수있는 많은 다른 옵션들이 있지만, 거의 모든 옵션은 어떤 종류의 설정을 저장하는 메커니즘을 제공한다면 어딘가에 쓰여진 파일로 끝납니다.

4

고려해야 할 또 다른 요소가 있습니다. 노련한 .NET 개발자는 웹 응용 프로그램과 데스크톱 응용 프로그램 모두에서 구성 파일을 사용하는 표준 응용 프로그램 디자인에 익숙합니다. 당신이 그 관행에서 출발한다면, 당신을 따르는 모든 개발자가 당신이 한 일을 이해하는 것을 더 어렵게 만들 것입니다. 웹 서버에있는 sa조차도 설정 파일이 없기 때문에 혼란 스러울 수 있습니다.

거의 모든 사람이이 방법으로 코드를 작성하므로 코드가 다른 사람에게 "깔끔하게"보입니다. 반대로, 예상되는 위치에 config 파일이 보이지 않는 것은 당연한 일입니다.

0

이 주석과 다른 검색에서 작성된 내용을 고려한 후에 MyApplication.exe가 필요하지 않고 My Entity Framework 연결 문자열을 내 실행 파일에 포함하려는 가장 좋은 방법을 결정했습니다.내 배포 된 솔루션과 설정 파일은 같은 파생 클래스를 생성했다 : 난 그냥 app.config 파일에서 발견되는 것과 같은 문자열을 포함 유형 연결 문자열의 응용 프로그램 설정을 만들어

Public Class MyEFDataContainerLocal 
    Inherits MyEFDataContainer 

    Public Sub New() 
     MyBase.New(My.Settings.MyEFContainerConnectionString) 
    End Sub 
End Class 

. 방금 &quote;을 실제 따옴표로 바꿔야했습니다.

그런 다음 Dim db As New MyEFDataContainer에서 MyEFDataContainer를 사용하고 싶을 때마다 대신 Dim db As New MyEFDataContainerLocal을 사용합니다.

관련 문제