我正在尝试使用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上运行?
答案 0 :(得分:1)
您可以在Common Macros for Build Commands and Properties
找到所有可用的msbuild常量它们都在您的部署环境中。您的 ProjLocation 常量看起来像 $(ProjectDir)。
无论如何,如果你需要走出当前目录,你可以使用这样的相对路径:
$(ProjectDir)\..\..\Level2UpperSubFolder