无论在Uno平台解决方案中为构建指定了什么头,VStudio始终会为引用的多目标项目编译所有TargetFrameworks。

时间:2020-06-17 14:24:39

标签: msbuild cross-platform visual-studio-2019 uno-platform multitargeting

我正在使用Uno平台开发跨平台应用程序。 该应用程序由我的App的5个标准头项目和十二个引用的跨平台库项目(Uno平台跨平台库项目,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不知道哪个主项目触发了所引用项目的构建,以及哪个目标平台是必需的。

1 个答案:

答案 0 :(得分:1)

这是一个已知的Visual Studio 2019 issue,其中所有目标均被构建,而与正在编译的实际head项目无关。

同时,您可以在构建应用程序时手动排除某些目标框架,并使用Visual Studio的solution filter feature,以便nuget不会抱怨无效的项目引用。这样,您可以制作4个过滤器,每个过滤器都排除当前未在平台上使用的项目。