如果是发布版本,我想有条件地取消定义DEBUG
。
有没有我可以检查的属性,看看我们目前是否正在发布?
答案 0 :(得分:3)
您可以连接自己的目标来设置一个属性,然后可以关闭行为,或者做任何你想做的事情。下面的项目修改显示了如何使用您自己的前后目标连接到现有的Publish目标依赖项。 before target设置属性。然后,在项目的现有部分中,在$(DefineConstants)属性中定义DEBUG,您将有条件地决定是否将DEBUG添加到常量列表中,具体取决于您在执行构建时设置的属性,因为发布。
<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>
答案 1 :(得分:1)
<Choose>
<When Condition="'$(BuildType)' == 'publish'">
<PropertyGroup>
<DefineConstants>Release</DefineConstants>
</PropertyGroup>
</When>
</Choose>
除了发布之外,您可能还需要其他值。但是,这应该有用。
我们在我们这里所做的是实际上有一个发布,调试和发布。我们通过从发布版本进行复制来创建发布,因此它具有所有设置。
答案 2 :(得分:1)
<Copy SourceFiles="Web.Base.config" DestinationFiles="Web.config" OverwriteReadOnlyFiles="True" Condition="!('$(PublishProfileName)' == '' And '$(WebPublishProfileFile)' == '')" />
这将执行&#34;复制&#34;仅当构建使用PublishProfile标志时。
http://sedodream.com/2013/01/06/commandlinewebprojectpublishing.aspx
答案 3 :(得分:0)
在 VS2019 16.10.1 中测试。
<Target Name="XXX" Condition="'$(PublishProtocol)'!=''">