应用程序版本变更

Visual Studio
如何:指定生成事件(C#、J#)

可以使用生成事件指定在生成开始之前或生成完成之后运行的命令。只有当生成成功到达生成过程中的这些时间点时,才执行生成事件。

在生成项目后,将预生成事件保存到名为 PreBuildEvent.bat 的文件中,而将生成后事件保存到名为 PostBuildEvent.bat 文件中。如果要确保进行错误检查,请将错误检查命令添加到生成步骤中。

 

注意

对话框中的可用选项以及显示的菜单命令的名称和位置可能会与“帮助”中的描述不同,具体取决于您的现用设置或版本。此“帮助”页是根据“常规开发设置”而编写的。若要查看或更改设置,请在“工具”菜单上选择“导入和导出设置”。有关更多信息,请参见 Visual Studio 设置

如何指定预先生成和后期生成事件

指定生成事件

  1. 在解决方案资源管理器中,选择要为其指定生成事件的项目。

  2. 在“项目”菜单上单击“属性”。

  3. 选择“生成事件”选项卡。

  4. 在“预生成事件命令行”框中指定生成事件的语法。

    Note注意

    如果项目是最新的且没有触发任何生成,则不会运行预生成事件。

  5. 在“生成后事件命令行”框中指定生成事件的语法。

    Note注意

    在运行 .bat 文件的所有后期生成命令之前添加一个 call 语句。例如,call C:/MyFile.batcall C:/MyFile.bat call C:/MyFile2.bat

  6. 在“运行生成后事件”框中指定运行生成后事件的条件。

    Note注意

    若要添加长语法或从 预生成事件/生成后事件命令行对话框 中选择任何生成宏,请单击省略号按钮 (…) 以显示编辑框。

    该生成事件语法可以包括命令行或 .bat 文件中任何有效的命令。批处理文件名的前面应带有 call,以确保后面的所有命令都被执行。

示例:如何使用后期生成事件更改清单信息

下面的过程说明如何使用从后期生成事件(项目目录中的 .exe.manifest 文件)中调用的 .exe 命令设置应用程序清单中的操作系统最低版本。操作系统最低版本是一个由四个部分组成的编号,如 4.10.0.0。为此,该命令会更改清单的 <dependentOS> 节:

<dependentOS>
   <osVersionInfo>
      <os majorVersion="4" minorVersion="10" buildNumber="0" servicePackMajor="0" />
   </osVersionInfo>
</dependentOS>

创建用于更改应用程序清单的 .exe 命令

  1. 针对该命令,创建一个控制台应用程序。从“文件”菜单中单击“新建”,再单击“项目”。

  2. 在“新建项目”对话框中的“Visual C#”节点中,选择“Windows”,再选择“控制台应用程序”模板。将项目命名为 ChangeOSVersionCS

  3. 在 Program.cs 中,将以下行添加到文件顶部的其他 using 语句:

    using System.Xml;
  4. 在 ChangeOSVersionCS 命名空间中,使用以下代码替换 Program 类的实现:

    class Program
    {
       /// <summary>
       /// This function will set the minimum OS version for a ClickOnce application.
       /// </summary>
       /// <param name="args">
       /// Command Line Arguments:
       /// 0 - Path to application manifest (.exe.manifest).
       /// 1 - Version of OS
       ///</param>
       static void Main(string[] args)
       {
          string applicationManifestPath = args[0];
          Console.WriteLine("Application Manifest Path: " + applicationManifestPath);
    
          //Get version name
          Version osVersion = null;
          if (args.Length >=2 ){
             osVersion = new Version(args[1]);
          }else{
             throw new ArgumentException("OS Version not specified.");
          }
          Console.WriteLine("Desired OS Version: " + osVersion.ToString());
    
          XmlDocument document;
          XmlNamespaceManager namespaceManager;
          namespaceManager = new XmlNamespaceManager(new NameTable());
          namespaceManager.AddNamespace("asmv1", "urn:schemas-microsoft-com:asm.v1");
          namespaceManager.AddNamespace("asmv2", "urn:schemas-microsoft-com:asm.v2");
    
          document = new XmlDocument();
          document.Load(applicationManifestPath);
    
          string baseXPath;
          baseXPath = "/asmv1:assembly/asmv2:dependency/asmv2:dependentOS/asmv2:osVersionInfo/asmv2:os";
    
          //Change minimum required OS Version.
          XmlNode node;
          node = document.SelectSingleNode(baseXPath, namespaceManager);
          node.Attributes["majorVersion"].Value = osVersion.Major.ToString();
          node.Attributes["minorVersion"].Value = osVersion.Minor.ToString();
          node.Attributes["buildNumber"].Value = osVersion.Build.ToString();
          node.Attributes["servicePackMajor"].Value = osVersion.Revision.ToString();
    
          document.Save(applicationManifestPath);
       }
    }

    此命令带两个参数:到应用程序清单的路径(即生成过程在其中创建清单的文件夹,通常为 Projectname.publish),以及新的操作系统版本。

  5. 生成项目。在“生成”菜单上,单击“生成解决方案”。

  6. 将 .exe 文件复制到一个目录(如 C:/TEMP/ChangeOSVersionVB.exe)。

然后,在后期生成事件中调用此命令以更改应用程序清单。

调用后期生成事件以更改应用程序清单

  1. 为要发布的项目创建一个 Windows 应用程序。从“文件”菜单中单击“新建”,再单击“项目”。

  2. 在“新建项目”对话框中的“Visual C#”节点中,选择“Windows”,再选择“Windows 应用程序”模板。将项目命名为 CSWinApp

  3. 在“解决方案资源管理器”中选择该项目,然后在“项目”菜单中单击“属性”。

  4. 在“项目设计器”中,转到“发布”页,将“发布位置”设置为 C:/TEMP/

  5. 通过单击“立即发布”发布该项目。

    将生成清单文件,并将其置于 C:/TEMP/CSWinApp_1_0_0_0/CSWinApp.exe.manifest 中。若要查看该清单,请右击该文件并单击“打开方式”,再单击“从列表中选择程序”,然后选择“记事本”。

    在该文件中搜索 <osVersionInfo> 元素。例如,版本可能是:

    <os majorVersion="4" minorVersion="10" buildNumber="0" servicePackMajor="0" />
  6. 在“项目设计器”中,转到“生成事件”选项卡并单击“编辑后期生成”按钮。

  7. 在“后期生成事件命令行”框中,输入下面的命令:

    C:/TEMP/ChangeOSVersionCS.exe "$(TargetPath).manifest" 5.1.2600.0

    生成项目时,此命令会将应用程序清单中的操作系统最低版本更改为 5.1.2600.0。

    $(TargetPath) 宏表示所创建的可执行文件的完整路径,因此 $(TargetPath).manifest 将指定在 bin 目录中创建的应用程序清单。发布时会将此清单复制到您在上面设置的发布位置。

  8. 重新发布项目。转到“发布”页,单击“立即发布”。

    再次查看该清单。若要查看该清单,请转到发布目录,右击该文件并单击“打开方式”,再单击“从列表中选择程序”,然后选择“记事本”。

    版本应显示为:

    <os majorVersion="5" minorVersion="1" buildNumber="2600" servicePackMajor="0" />
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值