2016-10-01 171 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

不客气。 我知道这只是太好:) –

相关问题