gpt4 book ai didi

powershell - 如何修改cspkg中定义的csdef

转载 作者:行者123 更新时间:2023-12-04 23:06:46 24 4
gpt4 key购买 nike

为了部署到不同的 Azure 环境,我修改了 csdef 作为编译步骤的一部分来更改主机 header 。这样做需要为每个环境构建一次 cspkg,而不是能够重用 cspkg 并指定不同的部署配置。

我想在创建 cspkg 后修改它的 csdef 文件,而不需要重新编译。这可能吗?如果可能的话,如何实现?

最佳答案

我已经做了一些与您所追求的类似的事情来区分测试环境和实时环境。首先,您需要创建一个新的 .csdef 文件,用于备用设置。这需要是完整的文件,因为我们只是将其与原始文件交换。现在我们需要将其添加到云项目中。右键单击云项目并选择卸载项目。再次右键单击它并选择编辑[项目名称]。有一个部分看起来有点像这样:

<ItemGroup>
<ServiceConfiguration Include="ServiceConfiguration.Test.cscfg" />
<ServiceDefinition Include="ServiceDefinition.csdef" />
<ServiceConfiguration Include="ServiceConfiguration.cscfg" />
</ItemGroup>

添加一个指向新创建的文件的新 ServiceDefinition 项。现在找到以下行:

<Import Project="$(CloudExtensionsDir)Microsoft.WindowsAzure.targets" />

然后添加此代码块,将 TargeProfile 检查编辑为您想要用于替代的构建配置,并确保它指向您的新 .csdef 文件

<Target Name="AfterResolveServiceModel">
<!-- This should be run after it has figured out which definition file to use
but before it's done anything with it. This is all a bit hard coded, but
basically it should remove everything from the SourceServiceDefinition
item and replace it with the one we want if this is a build for test-->
<ItemGroup>
<!-- This is an interesting way of saying remove everything that is in me from me-->
<SourceServiceDefinition Remove="@(SourceServiceDefinition)" />
<TargetServiceDefinition Remove="@(TargetServiceDefinition)" />
</ItemGroup>
<ItemGroup Condition="'$(TargetProfile)' == 'Test'">
<SourceServiceDefinition Include="ServiceDefinition.Test.csdef" />
</ItemGroup>
<ItemGroup Condition="'$(TargetProfile)' != 'Test'">
<SourceServiceDefinition Include="ServiceDefinition.csdef" />
</ItemGroup>
<ItemGroup>
<TargetServiceDefinition Include="@(SourceServiceDefinition->'%(RecursiveDirectory)%(Filename).build%(Extension)')" />
</ItemGroup>
<Message Text="Source Service Definition Changed To Be: @(SourceServiceDefinition)" />
</Target>

要恢复正常,请右键单击项目并选择“重新加载项目”。现在,当您构建项目时,根据您使用的配置,它将使用不同的 .csdef 文件。值得注意的是,中的设置编辑器不知道您的第二个 .csdef 文件,因此如果您通过 GUI 添加任何新设置,则需要将它们手动添加到此备用版本。

关于powershell - 如何修改cspkg中定义的csdef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10433107/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com