3

我正在使用 Uno 平台开发跨平台应用程序。该应用程序由我的应用程序的 5 个标准头项目和十几个引用的跨平台库项目(Uno-platform 跨平台库项目、MSBuild.Sdk.Extras、VStudio 2019)组成。引用的项目库具有指定的多目标框架,例如:netstandard2.0;xamarinios10;xamarinmac20;MonoAndroid90;monoandroid10.0。解决方案结构如下所示:

- SolutionApp
    - App.Droid
    - App.iOS
    - App.macOS
    - App.UWP
    - App.Wasm
    - App.Shared
    - MultiTargetLibrary1
    ...
    - MultiTargetLibraryN

问题是每次我重建任何头部应用程序项目时,VStudio 都会为所有可用的目标框架重建引用的项目。

如何避免编译不必要的目标平台?引用的项目如何获得哪个头部项目触发了构建?是否有可能通过 VStudio 的引用项目构建中需要哪个确切的目标框架?

示例:我选择重建 App.iOS,它触发了引用项目的重建。我想要构建只有“xamarinios10”TargetFramework 的项目。

如果只有几个目标框架或项目,编译并不慢,但随着引用项目数量的增加,时间会大大增加。

正如我从 msbuild 参考中得到的:VStudio 分别为解决方案上的每个项目调用 msbuild,因此 msbuild 不知道哪个头项目触发了引用项目的构建以及需要哪个目标平台。

4

1 回答 1

3

这是一个已知的Visual Studio 2019 问题,无论正在编译的实际头项目如何,都会构建所有目标。

同时,您可以在构建应用程序时手动排除一些目标框架,并使用 Visual Studio 的解决方案过滤器功能,使 nuget 不会抱怨无效的项目引用。这样,您可以制作 4 个过滤器,每个过滤器都排除了不用于您当前正在处理的平台的项目。

于 2020-06-17T14:29:07.240 回答