2016-10-01 33 views
0

我們有一個控制檯應用程序,我們用它來調用DbUp(創建數據庫,更新,測試數據等)。沒有DEBUG常量定義,#if DEBUG在發佈版本上返回true

我們的配置,穩定,即配置爲不定義DEBUG常數:

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Stable|AnyCPU'"> 
    <OutputPath>bin\Stable\</OutputPath> 
    <DefineConstants>TRACE</DefineConstants> 
    <Optimize>true</Optimize> 
    <DebugType>pdbonly</DebugType> 
    <PlatformTarget>AnyCPU</PlatformTarget> 
    <ErrorReport>prompt</ErrorReport> 
    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet> 
    <Prefer32Bit>true</Prefer32Bit> 
    </PropertyGroup> 

然而,當這種大幹快上八達通運行,這總是返回true,可容納部署:

#if DEBUG 
Console.ReadLine(); 
#endif 

當我切換到本地穩定配置(VS)時,它會按預期運行並退出。

當我切換到本地調試配置(VS)時,它按預期運行並等待輸入。

如果我完全註釋掉這些行,它可以在八達通上正常運行(退出,在八達通上部署完成)。

這讓我質疑我在生活中的所有選擇。

任何想法,爲什麼這可能發生?

編輯 - 命令用來構建項目(使用的TeamCity)

# Database 
Invoke-Msbuild "$rootDir\artifacts\output\Database" ` 
      "$rootDir\MyClient.Database\MyClient.Database.csproj" ` 
      -target 'build' ` 
      -toolsVersion 4.0 ` 
      -maxCpuCount 8 ` 
      -VisualStudioVersion 14.0 ` 
      -logPath "$rootDir\artifacts\logs\Database" ` 
      -namespace 'MyClient' ` 
      -customParameters @('/property:RunOctoPack=true', "/property:OctoPackPackageVersion=$version", "/property:OctoPackNuGetProperties=env=$environment") 
+0

如何以及在哪裏是這樣打造您沒有提供關於不變? msbuild命令行? – rene

+0

TeamCity是它建立的地方,它正在創建一個nuget包並將其推送到Octopus – Jack

+0

使用用於構建控制檯項目的命令更新了我的問題。 – Jack

回答

1

構建服務器建立。章魚部署。

所以我不認爲八達通與這個問題有關。 你有像TeamCity這樣的構建服務器嗎? Perhabs在配置中有什麼問題嗎?

編輯:

你試試這個參數嗎?

-MsBuildParameters「/目標:清潔;構建/屬性:配置=穩定;平臺=」「混合平臺」,」

+0

是的,我意識到這一點。使用TeamCity構建,Nuget包創建並推送到八達通,它在觸手上運行。我添加了用於構建項目的代碼。 – Jack

+0

嘆息,這是當你在午夜看代碼時發生的情況。謝謝! – Jack

+0

不客氣。 我知道這只是太好:) –