是否有任何MSBuild属性显示我们正在发布?

是否有任何MSBuild属性显示我们正在发布?,msbuild,Msbuild,如果是发布版本,我想有条件地取消定义调试 是否有一个属性我可以检查以查看我们当前是否正在发布?您可以连接到自己的目标以设置一个属性,然后可以关闭该属性的行为键,或者执行任何您想要的操作。下面的项目修改显示了如何将现有的发布目标依赖项与您自己的前后目标关联起来。在目标设置属性之前。然后,在项目的现有部分中,调试是在$(DefineConstants)属性中定义的,您可以根据由于发布而执行生成时设置的属性,有条件地决定是否将调试添加到常量列表中 <PropertyGroup> &l

如果是发布版本,我想有条件地取消定义
调试


是否有一个属性我可以检查以查看我们当前是否正在发布?

您可以连接到自己的目标以设置一个属性,然后可以关闭该属性的行为键,或者执行任何您想要的操作。下面的项目修改显示了如何将现有的发布目标依赖项与您自己的前后目标关联起来。在目标设置属性之前。然后,在项目的现有部分中,调试是在$(DefineConstants)属性中定义的,您可以根据由于发布而执行生成时设置的属性,有条件地决定是否将调试添加到常量列表中

<PropertyGroup>
   <PublishDependsOn>MyBeforePublish;$(PublishDependsOn);MyAfterPublish</PublishDependsOn>
</PropertyGroup>

<Target Name="MyBeforePublish">
   <PropertyGroup>
      <DetectPublishBuild>true</DetectPublishBuild>
   </PropertyGroup>
</Target>
<Target Name="MyAfterPublish">
   <PropertyGroup>
      <DetectPublishBuild>false</DetectPublishBuild>
   </PropertyGroup>
</Target>

...

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
   <PlatformTarget>x86</PlatformTarget>
   <DebugSymbols>true</DebugSymbols>
   <DebugType>full</DebugType>
   <Optimize>false</Optimize>
   <OutputPath>bin\Debug\</OutputPath>
   <DefineConstants>TRACE</DefineConstants>
   <DefineConstants
      Condition="'$(DetectPublishBuild)' != 'true'"
      >DEBUG;$(DefineConstants)</DefineConstants>
   <ErrorReport>prompt</ErrorReport>
   <WarningLevel>4</WarningLevel>
</PropertyGroup>

MyBeforePublish$(PublishDependsOn);MyAfterPublish
真的
假的
...
x86
真的
满的
假的
bin\Debug\
痕迹
调试$(定义常量)
促使
4.

释放
除了release,您可能还需要其他值。但是,这应该行得通

然而,我们在自己的地方所做的是实际进行发布、调试和发布。我们创建publish的方法是让它从发行版复制,这样它就有了所有的设置。


<Copy SourceFiles="Web.Base.config" DestinationFiles="Web.config" OverwriteReadOnlyFiles="True" Condition="!('$(PublishProfileName)' == '' And '$(WebPublishProfileFile)' == '')" />
这将仅在生成使用PublishProfile标志时执行“复制”


是否为winforms、网站和Web应用程序项目定义了
PublishDependsOn
属性?
$(BuildType)
似乎是用户定义的,因此无法直接使用。
<Copy SourceFiles="Web.Base.config" DestinationFiles="Web.config" OverwriteReadOnlyFiles="True" Condition="!('$(PublishProfileName)' == '' And '$(WebPublishProfileFile)' == '')" />