gpt4 book ai didi

c# - makepri.exe 是如何集成到 MSBuild 中的?

转载 作者:行者123 更新时间:2023-11-30 14:13:27 24 4
gpt4 key购买 nike

我正在尝试理解 Resource Management在 WinRT 中。

文档说:

MakePRI.exe is a command line tool used for creating and dumping PRI files. It is integrated as part of MSBuild within Microsoft Visual Studio, but can be useful for developers to create packages by hand or by custom build systems.

我想知道 makepri.exe 是如何集成到 MSBuild 中的,我该如何配置它?

最佳答案

您的 csproj 文件为 C# XAML 应用程序导入此文件:

%ProgramFiles(x86)%\MSBuild\Microsoft\WindowsXaml\v11.0\Microsoft.Windows.UI.Xaml.CSharp.Targets

这又会导入以任何语言编写的 Windows XAML 应用程序所共有的内容:

%ProgramFiles(x86)%\MSBuild\Microsoft\WindowsXaml\v11.0\Microsoft.Windows.UI.Xaml.Common.Targets

最后它导入这个包含 makepri 配置命令的文件:

%ProgramFiles(x86)%\MSBuild\Microsoft\VisualStudio\v11.0\AppxPackage\Microsoft.AppxPackage.Targets

里面有一个叫做“_GenerateProjectPriFileDependsOn”的东西,它由这些任务组成:

        _GeneratePrisForPortableLibraries;
_GetPriFilesFromPayload;
_ComputeInputPriFiles;
_GenerateProjectPriConfigurationFiles;
_CalculateInputsForGenerateProjectPriFileCore;
_GenerateProjectPriFileCore;
_AddFileReadsAndFileWritesForProjectPri;
_CreateProjectPriFileItem;
_ExpandPriFiles;

似乎它运行了一些任务来列出资源,为 makepri 生成一个配置文件,然后运行 ​​makepri。

目标文件分析起来有点神秘,我会在这里中断并寻找这些 makepri 配置文件。如果您在应用程序项目的 obj 文件夹下搜索,您可以找到一个名为 priconfig.xml 的文件。事实上,如果您运行 makepri.exe,您会发现有一个用于创建配置文件的 makepri 命令,如果您尝试这样做(通过运行 makepri.exe createconfig),您将了解到 priconfig.xml 是配置文件的通用名称.如果运行“makepri new”,您将看到生成 pri 文件的选项和调用语法(“MakePri.exe new/pr/cf [options]”)。现在 priconfig.xml 文件列出了一些其他文件,例如 pri.resfiles,它似乎列出了从引用的程序集导入的 pri 文件和 layout.resfiles,它是要打包到应用程序中的所有内容文件的列表。

这就是 makepri 集成到 msbuild 的大致方式。现在 Windows 开发人员中心在 Resource Management System 上有整个主题其中描述了如果您想手动运行它,您将如何配置它。

您可能还想在 naming resources using qualifiers 上阅读另一个相关主题。它显示了如何使用各种限定符(比例、区域设置等)命名或位于限定 rune 件夹中的资源。

关于c# - makepri.exe 是如何集成到 MSBuild 中的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14242763/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com