2011-09-08 5 views
1

여러 고객을 위해 만들어진 솔루션이 있으며 각 고객마다 다른 xml 파일을 지정할 수 있어야합니다. 이 작업을 자동으로 수행하려면 어떻게해야합니까? 나는 그것이 다른 설정으로 끝날지도 모른다고 생각하고 있었지만, 어떻게 생각하는지 모른다.구성에 따라 빌드되는 파일을 자동으로 변경하는 방법 - Visual Studio

제안 사항?

편집 :

protected readonly static string XML_PATH = @"Resources/xml/Description.xml"; 

그리고 지금 해결 수동하기 전에 Description.xml에 올바른 파일을 복사하는 것입니다되는 방식이 지금 xml 파일 선언에 사용되는 코드입니다

건물. 이것은 물론 오류가 발생하기 쉽고 우선적으로 구성을 기반으로 자동화하고 싶습니다. 불행히도 코드를 리팩토링 할 시간이 없으므로 지금 당장 빠른 픽스를 찾고 있습니다.

+0

xml 파일이 만들어 졌습니까? 정확하게 무슨 뜻입니까? –

+0

아니요 XML이 작성되지 않았으며 일부 설명 만 포함되어 있습니다. 이 설명은 고객마다 다르며 다른 구성에 따라 어떤 파일이 사용되는지 확인할 수 있기를 원합니다. – Keller

답변

1

구성 파일 관리를위한 더 나은 기술인 this을 읽을 가치가 있습니다.

+0

링크를 제공해 주셔서 감사합니다. 빌드 이벤트와 .bat 파일을 사용하여 문제를 해결했습니다. – Keller

1

빌드 구성 종속 구성 파일은 까다로운 문제이며이를 해결하는 방법은 여러 가지가 있습니다.

약술 된 길을 피하려면 * .csproj 파일을 수동으로 편집하고 올바른 xml 파일을 포함하도록 조건부 ItemGroup을 추가해야합니다. 아래의 구문은 확인되지 않았지만, 이런 일이

<ItemGroup Condition="'${Configuration}' == 'DEBUG'"> 
<Content Include="blablabl.xml"/> 
</ItemGroup> 

나는 내용이 바로 ItemGroup 인 경우 기억하지만, 단순히 현재 .xmls가에있는 것을 사용 ItemGroup 무엇을 선택하지를해야한다.

+0

설정 파일을 망치고 싶지 않습니다. 나는 명확한 설명을 위해이 질문을 편집했는데, 어쨌든 이것이 내 문제를 해결할 지 확신 할 수 없다. 어쩌면 여기서 뭔가를 놓치고있는 것일 수 있습니다. – Keller

0

자 이제 저는 스스로 승진하는 것에 대해 눈살을 찌푸리게됩니다. 그러나이 경우에는 질문과 관련이있는 것처럼 들리 겠지만 나는 이것에서 아무 것도 얻지 못하길 바랍니다.

최근 내가 여러 환경/기계 타겟으로하는 방법에 대한 블로그 게시물의 몇 썼다 :

Targeting multiple environments and machines - part 1/2

Targeting multiple environments and machines – part 2/2

내가 알고있는 것처럼를,이 경우 문제는, 당신을 어떻게 어떤 파일이 어떤 고객/환경에 속하는지 수동으로 파악할 필요없이 올바른 파일 세트를 자동으로 빌드합니다. 블로그 게시물에서 내가 제안한 솔루션은 nAnt과 함께 일부 확장 기능이 위에 표시되어 있음을 나타냅니다. nAnt는 빌드 도구 인 Ant의 .NET 버전입니다. xml 파일에는 특정 입력 파일 세트가 주어 지므로 고객 별 web.config 파일을 생성 할 수 있습니다. 의 CUSTOMERNAME 키에 대한 값을 지정하는 대신

<appSettings> 
    <add key="CustomerName" value="${CustomerName}"/> 
</appSettings> 

을 : web.config 파일의 다음 appSetting 섹션에서

, 당신은 각 고객의 CUSTOMERNAME 키에 대해 다른 값을 지정하고 싶은 말은 CustomerName이라는 속성을 정의하십시오. 이제, 우리는 NANT를 사용하는 가정, 다음과 같은 내용으로 다른 고객의 특정 파일을 만듭니다

<?xml version="1.0" encoding="utf-8"?> 
<target xmlns="http://nant.sf.net/release/0.86-beta1/nant.xsd"> 
    <property name="CustomerName" value="Acme Incorporated"/>  
</target> 

NANT는 당신을 위해 고객/환경에게 특정 파일을 만들이 두 파일을 병합 자동으로 할 수 있습니다.

해결 방법을 통해 웹과 같은 환경 및 컴퓨터 특정 파일을 자동으로 빌드 할 수 있습니다.config 파일뿐만 아니라 라이센스 파일이나 라이브러리와 같은 정적 파일을 출력 할 수 있습니다.이 파일은 모두 대상 환경/시스템에 따라 다릅니다. 또한 Visual Studio 2010 솔루션 샘플을 제공합니다.이 솔루션은 수행 방법에 대한 매우 기본적인 예제를 보여줍니다. download here.

물론 nAnt을 살펴볼 수도 있지만 내 솔루션을 사용하는 옵션을 제공 할 것이라고 생각했습니다. 당신이에 읽고 싶은 경우

protected readonly static string XML_PATH = 
#if DEBUG 
@"Resources/xml/Description.xml"; 
#else 
@"Resources/xml/Description2.xml"; 
#endif 

: (! : 그것은 지저분한 및 설정 파일을 관리하지 않을 권리 방법주의) 당신은 조건부 컴파일을 사용할 수

: 당신의 공식화 질문을 바탕으로

+0

제안을 주셔서 감사합니다, 그것은 재미있어 보이지만, 이것은 빠른 과용을 찾고 있는데, 과장된 것 같습니다 :-) 나는 그것에 대해 시간을 가지면 아마 이것을 살펴볼 것입니다. – Keller

+0

그런 경우, 사전 빌드 이벤트 추가를 고려해 보셨습니까? 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 '속성'을 선택한 다음 '이벤트 작성'을 선택하십시오. 각 고객에 대해 특정 빌드 구성을 추가하면 $ {ConfigurationName} 매크로를 사용하여 솔루션에 복사 할 xml 파일을 결정할 수 있습니다. 사전 빌드 이벤트에 대한 자세한 내용은 다음을 참조하십시오. http://msdn.microsoft.com/en-us/library/42x5kfw4.aspx – Tchami

+0

빌드 이벤트를 사용하여 종료되었습니다. 감사. – Keller

관련 문제