我們有一個控制檯應用程序,我們用它來調用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")
如何以及在哪裏是這樣打造您沒有提供關於不變? msbuild命令行? – rene
TeamCity是它建立的地方,它正在創建一個nuget包並將其推送到Octopus – Jack
使用用於構建控制檯項目的命令更新了我的問題。 – Jack