使用VS2017风格的csproj定位Xamarin Mobile Mac

时间:2017-06-09 04:23:58

标签: c# nuget xamarin.mac visual-studio-2017

我喜欢新的' msbuild包' VS2017中的nuget包生成。我想用它来生成一个使用Xamarin.Mac供Xamarin Mobile Mac项目使用的库。我试过了

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFrameworks>Xamarin.Mac</TargetFrameworks>
  </PropertyGroup>

</Project>

但我得到

Severity    Code    Description Project File    Line    Suppression State
Error       Cannot infer TargetFrameworkIdentifier and/or TargetFrameworkVersion from TargetFramework='Xamarin.Mac'. They must be specified explicitly. Kumquat.Common.Mac  C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Sdks\Microsoft.NET.Sdk\build\Microsoft.NET.TargetFrameworkInference.targets    84  

此示例(https://github.com/Azure/azure-mobile-apps-net-client/blob/master/src/Microsoft.Azure.Mobile.Client/Microsoft.Azure.Mobile.Client.csproj)有

<TargetFrameworks>netstandard1.4;net45;MonoAndroid71;Xamarin.iOS10;uap10.0</TargetFrameworks>

然而,当我尝试Xamarin.iOS10时,我得到了类似的错误。我需要在我的机器上安装一些特殊的东西才能获得Xamarin。*作为Target Frameworks吗?我确实安装了Xamarin。我有VS2017(版本15.2)。

1 个答案:

答案 0 :(得分:0)

Microsoft.NET.Sdk尚不支持此目标框架的自动推断。正如您在链接的示例中所看到的,它们稍后会在同一项目中添加所需的定义:

<PropertyGroup Condition=" '$(TargetFramework)' == 'Xamarin.iOS10' ">
  <TargetFrameworkIdentifier>Xamarin.iOS</TargetFrameworkIdentifier>
  <TargetFrameworkVersion>v1.0</TargetFrameworkVersion>
  <LanguageTargets>$(MSBuildExtensionsPath)\Xamarin\iOS\Xamarin.iOS.CSharp.targets</LanguageTargets>
  <DefineConstants>$(DefineConstants);PLATFORM_IOS;XAMARIN_AUTH_INTERNAL</DefineConstants>
</PropertyGroup>

.NET Sdk目前仅为TargetFrameworkIdentifierTargetFrameworkVersionnetstandard推断出netcoreappnet的逻辑(参见the source })