【问题标题】:Need some assistance with TFS2010 + an automated Build + 'Configurations to Build = Debug'需要 TFS2010 的帮助 + 自动构建 + 'Configurations to Build = Debug'
【发布时间】:2019-07-31 23:12:26
【问题描述】:

真的。诡异的。嘘。

当我执行TFS Team Build(使用Remote Deploy)时,我在网页上的一些#if DEBUG preprocessor directives 代码不会被调用。当我手动 one-click deploy (remote deploy) preprocessor directive 代码有效。当我在本地调试时,代码也可以工作。

所以 - 问题似乎与我对 Build Template 的配置设置有关(我认为??)。所以,这就是我所拥有的:-

没什么太难的。那说... 请善良的编译器。在“调试”模式下构建我的项目(阅读:项目,而不是解决方案)。

我的代码如下:-

#if DEBUG
    Log.Debug("We are in DEBUG mode.");
#else
    Log.Debug("We are _NOT_ in DEBUG mode.");   
#endif

因此,当调用此代码(在某些 aspx 页面中)时,它会打印出“我们处于调试模式”。什么时候

  • 本地主机(本地主机配置:调试)
  • 手动远程服务器一键重新部署(本地主机配置:调试)

但当我让 TFS 的持续集成开始时,就不会了。

FML。

我尝试查看是否是 CASING 情况(即 #if debug#if Debug),但仍然无法正常工作。

然后我什至尝试明确地告诉 MSBuild 配置....

还是没有爱。

哦..但这是软木塞!我有一些 web.config 转换

  • web.config
  • web.debug.config
  • web.release.config

...你能猜出哪个文件得到了转换吗?如果您猜到了 all 场景的 web.debug.config ,则获胜者......即使是在代码中出错的团队构建!所以这就像构建过程和工作流知道这是一个DEBUG 配置..kewl!但编译后的代码没有???

最后,更改 debug="true"debug="false" 没有区别。

在我跳出这栋楼之前,有人可以帮忙吗?当这些奇怪的问题不断出现在我的生活中时,它会杀死我。 叹息

请帮忙!

注意:我不能再接受为世界上最小的小提琴捐款 - 我已经得到了很多。干杯:)

【问题讨论】:

    标签: asp.net debugging preprocessor


    【解决方案1】:

    嗯,我找到了答案,但我对它不太满意。我会制作这个错误的视频并通过电子邮件发送给 Vishal @ MS ... 看看他的想法:)

    无论如何,如果您仔细查看默认配置到处,它就是这个......

    DEBUG | Any Cpu

    没有什么不寻常的...

    现在,当我将平台更改为 AnyCpu(注意我是如何删除空间的......)时,它现在可以正常工作了。

    例如..

    当我检查 .proj 文件时让我想到这一点......这是一个 sn-p......

    <?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
      <PropertyGroup>
        <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
        <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
        <ProductVersion>9.0.30729</ProductVersion>
        <SchemaVersion>2.0</SchemaVersion>
    ... snip for brevity ...
        <SccProvider>SAK</SccProvider>
      </PropertyGroup>
      <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
        <DebugSymbols>true</DebugSymbols>
        <DebugType>full</DebugType>
    ... snip for brevity ...
        <DesktopBuildPackageLocation />
      </PropertyGroup>
      <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
        <DebugType>pdbonly</DebugType>
    ... snip for brevity ...          
        <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
      </PropertyGroup>
    

    所以是的.. 我修复了它,但我不确定这是可以接受的还是只是侥幸。我需要从 MS 团队那里得到一些真正的答案:)

    【讨论】:

      【解决方案2】:

      我可以确认此行为以及解决方法。看起来 VS2010 会在以下情况下自动删除空间:a)将 Platform 值保存到解决方案/项目文件中,或者 b)在调用 MSBuild 时将其删除。

      无论哪种方式,TFS 构建引擎都不遵循此模式,如果您选择特定的平台|配置值,则必须手动删除空间。

      有趣的是,TFS 构建定义对话框允许您只输入配置。它会抱怨,然后接受输入。这种方法的优点是 Microsoft.Common.targets 文件通过默认为“AnyCPU”优雅地处理空平台输入值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-11-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多