根据您选择的生成配置更改 ClickOnce 设置(仅限 .NET 框架版本)

更新页 :
页面创建日期 :

环境

框架
  • Windows Forms (.NET Framework) 全般
  • WPF (.NET Framework) 全般

前提

此提示的内容是 .NET 框架的项目假设。 对于 .NET(核心),您可以在生成配置单元中设置 ClickOnce 的发布设置,以便像往常一样发布。

它还假定您具有使用 ClickOnce 的常识。

入门

.NET 框架项目只能有一个 ClickOnce 发布设置。 例如,若要在调试和发布生成中使用不同的设置发布,必须每次都手动更改设置,然后发布它们。

您可以将项目分组到 DLL 中,并创建两个单独的项目进行发布,以便有两个设置。 您将有两个类似的设置,如果发布所需的资源文件,则管理起来很麻烦,因为您必须有两个资源文件。

本节介绍如何根据需要创建任意数量的批处理文件 (.bat) 并发出 ClickOnce。

单击“打开”设置

这一次,“公共文件夹位置”和“安装文件夹 URL”在“调试生成”和“发布生成”中分开。 使用共同策略创建其他设置。 可以单独设置其他参数,但单独设置应用程序文件或先决条件可能很麻烦。

首先,打开项目,像往常一样输入 ClickOnce 设置。 输入的内容是 Debug 发出的参数,但除了公共部分之外,只要没有错误,就没有问题。

下面是一个配置示例。

完成后,保存项目。

为 ClickOnce 发布创建 .bat 文件

由于它由命令发出,因此可以在其他媒体(如 PowerShell)中运行,但这次我们将使用 BAT 文件创建它。

无论文件位于何处,都可以创建该文件,但这次,为了简化描述,我们将在解决方案文件 (.sln) 的位置创建该文件。 由于它是一个 BAT 文件,因此字符代码为 Shift-JIS。 PS1 可以是 UTF-8 (BOM)。

在文本编辑器中打开 BAT 文件,然后键入以下内容(例如): 请注意,对于 PowerShell,转义过程可能不同。

call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"
cd %~dp0
msbuild ClickOnceBuildConfiguration.sln /t:Publish /p:Configuration=Debug /p:PublishUrl="publish\Debug\\" /p:InstallUrl="\\xxxxServer\publish_Debug\\"

第一行指向开发人员命令提示符的位置。 此路径取决于您安装的视觉工作室版本。

路径的每个部分都取决于以下条件:

Program Files
路径 条件
Program Files
  • 如果您使用的是 32 位操作系统
  • 如果您在 64 位操作系统上使用 64 位版本的 Visual 工作室
Program Files (x86)
  • 如果您在 64 位操作系统上使用 32 位版本的 Visual 工作室
2022
这取决于您安装的视觉工作室版本。
Community
这取决于您安装的视觉工作室版本。 包括“Community”、“专业版”和“企业”。

第二行将当前目录移动到 BAT 文件所在的位置。

第三行是 ClickOnce 生成处理命令。 每个参数的含义如下:

参数名称 说明
msbuild 执行生成过程的命令。 这是必填项,也是第一个。
ClickOnceBuildConfiguration.sln 描述要生成的解决方案文件名。
/t:Publish 指示它是 ClickOnce 生成过程。
/p:Configuration=Debug 指定解决方案中设置的生成配置。 如果要更改要生成的调试配置,请更改调试部分的文本。
/p:PublishUrl="publish\Debug\\" 使用指定的字符串覆盖 Visual Studio 发布屏幕上的“公共文件夹位置”值。
/p:InstallUrl="\\xxxxServer\publish_Debug\\" 使用指定的字符串覆盖 Visual Studio 发布屏幕上的“安装文件夹 URL”值。

我们摘录了一些参数,但有关其他参数,请参阅下面的着陆页。

作为示例,我们将更改调试和发布生成中的 ClickOnce 发布参数,如下所示:

ClickOnceDebug发行.bat

call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"
cd %~dp0
msbuild ClickOnceBuildConfiguration.sln /t:Publish /p:Configuration=Debug /p:PublishUrl="publish\Debug\\" /p:InstallUrl="\\xxxxServer\publish_Debug\\"

ClickOnceRelease发行.bat

call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"
cd %~dp0
msbuild ClickOnceBuildConfiguration.sln /t:Publish /p:Configuration=Release /p:PublishUrl="publish\Release\\" /p:InstallUrl="\\xxxxServer\publish_Release\\"

ClickOnce 发行 BAT 文件执行

尝试运行每个 BAT 文件。

命令提示符将启动并启动生成。

事实上,由于 BAT 文件仅生成,因此不会在“公共文件夹位置”中创建该文件。 您已经创建了发布所需的文件。 例如,在调试生成中,文件应位于“<项目文件夹路径>\bin_调试\app.publish_”中。 将这些文件复制到安装文件夹 URL 将正确充当 ClickOnce。

发布到公共文件夹位置(如果发布者是可直接访问的文件夹)

此部分由以下网站提供参考。

此处与 ClickOnce 处理没有直接关系,因此请参考上述网站进行详细说明。

首先,在文本编辑器中打开项目文件 (.csproj)。 它不是解决方案文件。

内容是 XML 结构,您可以滚动 </Project> 到底部,因此请在上面的行中添加以下代码。 如果处理文件复制假设,则内容是固定的,但 CopyPublishedApplication 部分是可选的。 稍后我们将使用此名称。

<!-- ここから ClickOnce の発行処理 -->
<Target Name="CopyPublishedApplication">
  <ItemGroup>
    <MySourceFiles Include="$(PublishDir)**\*.*" Exclude="$(PublishDir)$(AssemblyName).exe" />
  </ItemGroup>
  <PropertyGroup>
    <AppricationDir>$(_DeploymentApplicationDir.Substring($(PublishDir.Length)))</AppricationDir>
  </PropertyGroup>
  <Copy SourceFiles="@(MySourceFiles)" DestinationFiles="@(MySourceFiles->'$(PublishUrl)%(RecursiveDir)%(Filename)%(Extension)')" />
</Target>
<!-- ここまで ClickOnce の発行処理 -->

键入后保存。

然后打开每个 BAT 文件,并将 添加到 msbuild 参数 /t:CopyPublishedApplication 中。 CopyPublishedApplication 是您刚才提供的名称。

ClickOnceDebug发行.bat (例)

call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"
cd %~dp0
msbuild ClickOnceBuildConfiguration.sln /t:Publish /t:CopyPublishedApplication /p:Configuration=Debug /p:PublishUrl="publish\Debug\\" /p:InstallUrl="\\xxxxServer\publish_Debug\\"

运行 BAT 文件时,可以验证该文件是否复制到“公共文件夹位置”。 此时<没有程序名称>.exe文件,但不需要该文件,因为它最初包含在 setup.exe 中。

补充

如果解决方案中有多个项目,则对所有项目 CopyPublishedApplication 运行 。 在大多数情况下,它仅设置为 exe 项目,因此当 在其他项目中 CopyPublishedApplication 运行 时,将显示错误。 您可以安全地忽略它,因为它只显示一条消息。

发布到公共文件夹位置(对于 FTP)

我还没有尝试过,但最好参考以下网站。

其他注意事项