2017-06-09 1 views
0

J'aime la nouvelle génération de paquet de puces 'mspack pack' dans VS2017. Je voudrais l'utiliser pour générer une bibliothèque qui utilise Xamarin.Mac pour être consommée par les projets Mac Xamarin Mobile. J'ai essayéCiblage du Mac Mobile Xamarin en utilisant le VS2017-style csproj

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

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

</Project> 

mais je reçois

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 

Cet exemple (https://github.com/Azure/azure-mobile-apps-net-client/blob/master/src/Microsoft.Azure.Mobile.Client/Microsoft.Azure.Mobile.Client.csproj) a

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

Cependant, lorsque je tente Xamarin.iOS10 sur ma fin, je reçois une erreur semblable. Y a-t-il quelque chose de spécial que je dois installer sur ma machine pour obtenir Xamarin. * Comme Target Frameworks? J'ai Xamarin installé. J'ai VS2017 (version 15.2).

Répondre

0

Le Microsoft.NET.Sdk ne prend pas encore en charge l'inférence automatique pour ce framework cible. Comme vous pouvez le voir dans l'exemple que vous LIÉ, ils ajoutent les définitions nécessaires plus tard dans le même projet:

<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 a une logique de déduire TargetFrameworkIdentifier et TargetFrameworkVersion seulement pour netstandard, netcoreapp et net pour le moment (voir the source)

+0

J'ai trouvé ceci, et c'était un sauveur - https://github.com/onovotny/MSBuildSdkExtras - bien que je voie toujours comment je peux l'obtenir pour travailler dans VSfM. – tofutim

+0

L'auteur a également fait un PR au noyau .NET SDK mais il n'a pas encore été accepté https://github.com/dotnet/sdk/pull/889. Toutes les approches font la même chose sous le capot. –