VStudio 始终为引用的多目标项目编译所有 TargetFrameworks,无论为 Uno 平台解决方案中的构建指定什么头
VStudio always compiles all the TargetFrameworks for referenced multi-target projects, whatever head is specified for a build in Uno-platform solution
我正在使用 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 不知道哪个头项目触发了引用项目的构建以及需要哪个目标平台。
这是已知的 Visual Studio 2019 issue,其中构建所有目标,而不管正在编译的实际 head 项目。
同时,您可以在构建应用程序时手动排除一些目标框架,并使用Visual Studio的solution filter feature,这样nuget就不会抱怨无效的项目引用。这样,您可以制作 4 个过滤器,每个过滤器都排除未用于您当前正在使用的平台的项目。
我正在使用 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 不知道哪个头项目触发了引用项目的构建以及需要哪个目标平台。
这是已知的 Visual Studio 2019 issue,其中构建所有目标,而不管正在编译的实际 head 项目。
同时,您可以在构建应用程序时手动排除一些目标框架,并使用Visual Studio的solution filter feature,这样nuget就不会抱怨无效的项目引用。这样,您可以制作 4 个过滤器,每个过滤器都排除未用于您当前正在使用的平台的项目。