ClickOnce目标设置

时间:2018-05-23 10:13:46

标签: c# visual-studio clickonce

我正在尝试使用ClickOnce通过命令行创建.bat文件来发布我的应用程序。我在StackOverflow上找到了this excellent post,建议在<Target>文件中创建一个新的.csproj。帖子中的代码看起来像这样(我删除了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上运行?

1 个答案:

答案 0 :(得分:1)

您可以在Common Macros for Build Commands and Properties

找到所有可用的msbuild常量

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

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

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