.NET Transforms 是否可以更改 csproj 文件中的 PropertyGroup?
.NET Transforms is it possible to change PropertyGroup in csproj files?
这种方式是一个愚蠢的问题。
我有一个具有多种配置的网络应用程序。为简单起见,我们假设 Qa 和 Local。
在我的每个项目中,每个配置都有一个 PropertyGroup,用于在选择 w 配置时定义设置。
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Qa|AnyCPU'">
<DeployIisAppPath>Default Web Site/</DeployIisAppPath>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<PlatformTarget>AnyCPU</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<IncludeIisSettings>false</IncludeIisSettings>
<DebugSymbols>true</DebugSymbols>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Local|AnyCPU'">
<DebugType>full</DebugType>
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<PlatformTarget>AnyCPU</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
所以基本上 Qa 被配置为尽可能优化,禁用调试,TRACE。这对我部署时有意义。
当我们需要调试 Qa 时,问题就来了。我将配置更改为 Qa,并将我的 web.config 更改为指向 Qa 配置。这样 VS 使用用于连接到 Qa 的连接字符串为 Qa 构建 bin 路径。这样做的副作用是它禁用了我所有项目的调试,我必须暂时将它们全部重新打开,以便将断点设置到我需要的位置。这很糟糕,我想改变它。
是否可以只在所有这些项目配置上启用调试,然后使用某种工具在部署时取消调试?我的第一个想法是添加一个转换来修改它,但转换不能更改 csproj 文件吗?还有其他工具可以做到这一点吗?
项目配置已经是确定何时使用哪些设置的好工具。项目配置名称不必与目标环境成一对一关系 - 您可以拥有更多(或更少)。
因此,与其在一个配置设置中来回更改 "QA" 的调试设置,不如准备如下配置:
- 本地
- 质量检查调试
- QA 优化
.. 或者您需要的许多不同配置。
默认情况下,您的 CI 工具集可以设置为使用配置 "QA optimized" 部署到 QA 环境。如果您 运行 遇到难以跟踪的问题并且需要远程调试它,您可以使用 "QA with debugging" 配置来构建和部署。
这种方式是一个愚蠢的问题。
我有一个具有多种配置的网络应用程序。为简单起见,我们假设 Qa 和 Local。
在我的每个项目中,每个配置都有一个 PropertyGroup,用于在选择 w 配置时定义设置。
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Qa|AnyCPU'">
<DeployIisAppPath>Default Web Site/</DeployIisAppPath>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<PlatformTarget>AnyCPU</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<IncludeIisSettings>false</IncludeIisSettings>
<DebugSymbols>true</DebugSymbols>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Local|AnyCPU'">
<DebugType>full</DebugType>
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<PlatformTarget>AnyCPU</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
所以基本上 Qa 被配置为尽可能优化,禁用调试,TRACE。这对我部署时有意义。 当我们需要调试 Qa 时,问题就来了。我将配置更改为 Qa,并将我的 web.config 更改为指向 Qa 配置。这样 VS 使用用于连接到 Qa 的连接字符串为 Qa 构建 bin 路径。这样做的副作用是它禁用了我所有项目的调试,我必须暂时将它们全部重新打开,以便将断点设置到我需要的位置。这很糟糕,我想改变它。
是否可以只在所有这些项目配置上启用调试,然后使用某种工具在部署时取消调试?我的第一个想法是添加一个转换来修改它,但转换不能更改 csproj 文件吗?还有其他工具可以做到这一点吗?
项目配置已经是确定何时使用哪些设置的好工具。项目配置名称不必与目标环境成一对一关系 - 您可以拥有更多(或更少)。
因此,与其在一个配置设置中来回更改 "QA" 的调试设置,不如准备如下配置:
- 本地
- 质量检查调试
- QA 优化
.. 或者您需要的许多不同配置。
默认情况下,您的 CI 工具集可以设置为使用配置 "QA optimized" 部署到 QA 环境。如果您 运行 遇到难以跟踪的问题并且需要远程调试它,您可以使用 "QA with debugging" 配置来构建和部署。