gpt4 book ai didi

deployment - MSDeploy runCommand 使用相对路径

转载 作者:行者123 更新时间:2023-12-03 20:56:02 25 4
gpt4 key购买 nike

我正在尝试通过 MSDeploy 运行命令作为我的打包/部署过程的一部分。特别是,我试图通过运行 创建自定义事件日志。安装工具 针对我的一个 DLL,但我无法指定 相对路径从部署目录到 DLL。首先,我将以下配置添加到我的 csproj 中,以便在我的 Manifest 文件中生成 runCommand 提供程序。请注意 DLL 的绝对路径。

<PropertyGroup>
<!-- Extends the AfterAddIisSettingAndFileContentsToSourceManifest action to create Custom Event Log -->
<IncludeEventLogCreation>TRUE</IncludeEventLogCreation>
<AfterAddIisSettingAndFileContentsToSourceManifest Condition="'$(AfterAddIisSettingAndFileContentsToSourceManifest)'==''">
$(AfterAddIisSettingAndFileContentsToSourceManifest);
CreateEventLog;
</AfterAddIisSettingAndFileContentsToSourceManifest>
</PropertyGroup>
<Target Name="CreateEventLog" Condition="'$(IncludeEventLogCreation)'=='TRUE'">
<Message Text="Creating Event Log" />
<ItemGroup>
<MsDeploySourceManifest Include="runCommand">
<path>installutil C:\inetpub\wwwroot\MyTestApp\bin\BusinessLayer.dll</path>
</MsDeploySourceManifest>
</ItemGroup>
</Target>
<ItemGroup>

在调用 msbuild 之后,这会在我的 package.zip 中正确生成我的 list 。当我运行 MyTestApp.deploy.cmd/Y 它正确调用 msdeploy 并将我的文件部署到 inetpub\wwwroot\MyTestApp 并从下面的 list 运行我的命令:
<runCommand path="installutil C:\inetpub\wwwroot\MyTestApp\bin\BusinessLayer.dll ... etc 

我遇到的问题是我不想将此 DLL 路径硬编码到 c:\inetpub\etc。如何使用 调用上述电话相对路径从我的默认网站下的部署目录?理想情况下,我想要 微软部署 获取此路径并将其作为变量传递给 runCommand 语句以查找 DLL。然后我可以写这样的东西: <path>installutil $DeploymentDir\NewTestApp\bin\BusinessLayer.dll</path>不必担心硬编码绝对路径。

有没有什么方法可以做到这一点,而无需每次都使用我的 DLL 的绝对路径?

最佳答案

您可以使用上面编写的操作将 DeploymentDir 的定义添加到 .csproj:

<PropertyGroup>
<DeploymentDir Condition="'$(Configuration)'=='Release' AND '$(DeploymentDir)'==''">Release Deployment Dir</DeploymentDir>
<DeploymentDir Condition="'$(Configuration)'=='Debug' AND '$(DeploymentDir)'==''">Debug Deployment Dir</DeploymentDir>
<DeploymentDir Condition="'$(DeploymentDir)'==''">C:\inetpub\wwwroot</DeploymentDir>
<AplicationName Condition="'$(Configuration)'=='Release' AND '$(AplicationName)'==''">NewTestApp</AplicationName>
<AplicationName Condition="'$(Configuration)'=='Debug' AND '$(AplicationName)'==''">MyTestApp</AplicationName>
<ApplicationDeploymentDir Condition="'$(ApplicationDeploymentDir)'==''">$(DeploymentDir)\$(ApplicationName)\bin</ApplicationDeploymentDir>
</PropertyGroup>

这些条件将允许从命令行更改所有内容,以完全控制构建系统或脚本中的构建过程。
MSBuild.exe yourproj.proj /p:Configuration=Release /p:DeploymentDir=D:\package /p:ApplivationName=BestAppForever

在您的任务中,您可以使用它
<ItemGroup>
<MsDeploySourceManifest Include="runCommand">
<path>installutil $(ApplicationDeploymentDir)\BusinessLayer.dll</path>
</MsDeploySourceManifest>
</ItemGroup>

关于deployment - MSDeploy runCommand 使用相对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4867758/

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