ClickOnce 目标设置

ClickOnce Target settings

我正在尝试创建一个 .bat 文件以通过命令行使用 ClickOnce 发布我的应用程序。我在 Whosebug 上找到了 ,它建议在 .csproj 文件中创建一个新的 <Target>。 post 中的代码如下所示(我删除了 clean 部分):

<PropertyGroup>
<ProjLocation>D:\Test\Projects\ClickOncePublish\ClickOncePublish</ProjLocation>
<ProjLocationReleaseDir>$(ProjLocation)\bin\Debug</ProjLocationReleaseDir>
<ProjPublishLocation>$(ProjLocationReleaseDir)\app.publish</ProjPublishLocation>
<DeploymentFolder>D:\Test\Publish\</DeploymentFolder>
</PropertyGroup>

<Target Name="Test" DependsOnTargets="Clean">

  <MSBuild Projects="$(ProjLocation)$(ProjectName).csproj" 
    Properties="$(DefaultBuildProperties)" 
    Targets="Publish"/>

  <ItemGroup>
    <SetupFiles Include="$(ProjPublishLocation)\*.*"/>
    <UpdateFiles Include="$(ProjPublishLocation)\Application Files\**\*.*"/>
  </ItemGroup>


    <Copy SourceFiles="@(SetupFiles)" DestinationFolder="$(DeploymentFolder)\" />
    <Copy SourceFiles="@(UpdateFiles)" DestinationFolder="$(DeploymentFolder)\Application Files\%(RecursiveDir)"/>
</Target>

我在这里遇到的问题是,我希望该文件也适用于其他人。使用硬编码 <ProjLocation> 会使这种情况变得棘手。有什么方法可以使路径相对,或者以其他方式使其在其他 PC 上工作?

您可以在此处找到所有可用的 msbuild 常量Common Macros for Build Commands and Properties

它们都在您的部署环境中。您的 ProjLocation 常量看起来像 $(ProjectDir).

无论如何,如果你需要跳出当前目录,你可以使用这样的相对路径:

$(ProjectDir)\..\..\Level2UpperSubFolder