문제

아마도 눈이 멀지 만 MSBuild에 조건부 편집 기호를 지정하는 명령 줄이 있습니까?

현재 내 빌드 스크립트 에이 라인이 있습니다.

SET MSBUILD=C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe
SET CONFIG=Debug
%MSBUILD% /p:Configuration=%CONFIG% /p:OutputPath=..\..\output source\MyProject\MyProject.csproj

그리고 조건을 추가하고 싶습니다. Visual Studio에서는 프로젝트 속성 => build => 조건부 컴파일 기호로 이동할 수 있지만 MSBuild에 대한 해당 옵션을 보지 못했습니까?

보너스 카르마 .csproj 파일에 이미 지정된 모든 기호를 완전히 무시할 수 있는지 알고 있다면 빌드 스크립트의 조건부 만 들어가도록합니다.

도움이 되었습니까?

해결책

당신은 본 적이 있습니다 이것? (대부분의 정보는 두 번째 게시물에 있습니다)

/p:DefineConstants="MYSYMBOL1;MYSYMBOL2"

다른 팁

나는 Björn Lasar의 세미콜론 대신에 공간을 사용해야했다. http://www.linqinpark.net/2009/01/13/msbuildwithmultipledefineconstants.aspx

업데이트 : 블로그가 사라졌습니다. 인터넷 아카이브를 통해 검색되었습니다:

최근에 일부 빌드를 자동화하기 위해 MSBuild를 직접 사용해야했습니다. 또한 구성을 기반으로 일부 사전 처리기 정의를 구성해야했습니다. 이것은 일반적으로 이와 같은 논쟁에 의해 수행됩니다

"/p:DefineConstants=MY_PREPROC_FLAG"

그것에 대한 웹에 충분한 의견이 있기 때문에 여기에 특별한 것은 없습니다. 오늘 나는 하나의 깃발이 더 필요했고 IDE에서 알았던 것과 비슷한 명령 선 삭스를 사용했습니다.

"/p:DefineConstants=MY_PREPROC_FLAG;YET_ANOTHER_FLAG"

그러나 이것은 작동하지 않았습니다.

요점은 여러분이 CommandLine으로 프로젝트에 대한 여러 정의를 지원하려면 간단한 공간으로 분리해야한다는 것입니다.

"/p:DefineConstants=MY_PREPROC_FLAG YET_ANOTHER_FLAG" 

그리고 IDE에서 (세미콜론 분리) 정의에 추가됩니다. 내가 생각한다면 반갑습니다 ...

답변에서 말하는 것은 유효합니다 C# 코드 및 ASP.NET "CodeBehind"C# CODE 용. 을 위한 ASP.NET 웹 프로젝트, ASPX 페이지에서 조건부 편집을하려면 페이지에서 HTML을 조건부로 렌더링하는 데 약간 다르게 작동합니다 (제거 된 참고. MasterPageFile="..." AutoEventWireup="true" CodeBehind="..." Inherits="..." 당신이 보통 <%@ ... %> 선언도) :

<%@ Page Title="MyPage" Language="C#" CompilerOptions="/d:DebugSym1;DebugSym2" %>

<% #if DebugSym1 %>         
    <h4>Section1</h4>
<% #else %>
    <h4>(Section 1 skipped)</h4>
<% #endif %>

<% #if DebugSym2 %>         
    <h4>Section2</h4>
<% #else %>
    <h4>(Section 2 skipped)</h4>
<% #endif %>

제거하면 DebugSym1 또는 DebugSym2 ~로부터 CompilerOptions, 그런 다음 #else 관련성의 일부 #if 진술이 렌더링됩니다.

나는 이것이이 주제의 완전성에 대해 언급 할 가치가 있다고 생각했고 시간을 절약 할 수 있다고 생각했습니다. 이것에서 더 많이 찾을 수 있습니다 기사, 당신이 관심이 있다면.

/p:DefineConstants 전부 또는 아무것도 다루는 것입니다.

추적 기호를 끄고 싶다면 다음과 같이 할 수 없습니다. msbuild /p:DefineTrace=false

이미 정의 된 모든 기호를 무시하기 위해 무언가를 정의해야합니다. msbuild /p:DefineConstants="RANDOM-SYMBOL"

감사합니다 Michael Stum Point이 숨겨진 규칙나는 또한 그것에 대한 블로그를 썼습니다 --- Dead Link

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top