dotnet构建未找到Xamarin



在我的项目中运行dotnet build时,我有以下错误:

/path/to/repo/Toolkit/My.Company.Toolkit.Platform.Android/My.Company.Toolkit.Platform.Android.csproj(91,3): error MSB4019: The imported project "/usr/local/share/dotnet/sdk/7.0.102/Xamarin/Android/Xamarin.Android.CSharp.targets" was not found. Confirm that the expression in the Import declaration "/usr/local/share/dotnet/sdk/7.0.102//Xamarin/Android/Xamarin.Android.CSharp.targets" is correct, and that the file exists on disk.
/path/to/repo/Toolkit/My.Company.Toolkit.Platform.iOS/My.Company.Toolkit.Platform.iOS.csproj(195,3): error MSB4019: The imported project "/usr/local/share/dotnet/sdk/7.0.102/Xamarin/iOS/Xamarin.iOS.CSharp.targets" was not found. Confirm that the expression in the Import declaration "/usr/local/share/dotnet/sdk/7.0.102//Xamarin/iOS/Xamarin.iOS.CSharp.targets" is correct, and that the file exists on disk.

我确认/usr/local/share/dotnet/sdk/7.0.102/Xamarin/iOS/Xamarin.iOS.CSharp.targets不存在。
但是我不知道怎么安装。

对Xamarin的引用在csproj中定义,如<Import Project="$(MSBuildExtensionsPath)XamarinAndroidXamarin.Android.CSharp.targets" />

当我从Visual Studio构建时,我没有任何问题。如果我尝试重新安装Xamarin,它说它已经安装了。

我在MacOS上。

(更新)

我卸载了所有东西(Visual Studio, sdk/Runtime, dotnet等)。刚刚安装了Mac版的Visual Studio 2022。

➜  ~ dotnet --info
.NET SDK:
Version:   7.0.102
Commit:    4bbdd14480
Runtime Environment:
OS Name:     Mac OS X
OS Version:  13.1
OS Platform: Darwin
RID:         osx.13-arm64
Base Path:   /usr/local/share/dotnet/sdk/7.0.102/
Host:
Version:      7.0.2
Architecture: arm64
Commit:       d037e070eb
.NET SDKs installed:
6.0.405 [/usr/local/share/dotnet/sdk]
7.0.102 [/usr/local/share/dotnet/sdk]
.NET runtimes installed:
Microsoft.AspNetCore.App 6.0.13 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 7.0.2 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 6.0.13 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 7.0.2 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Other architectures found:
None
Environment variables:
Not set
global.json file:
Not found
Learn more:
https://aka.ms/dotnet/info
Download .NET:
https://aka.ms/dotnet/download

现在,如果我尝试在终端中构建项目,我仍然有相同的错误。但是,如果我尝试从Visual Studio构建它,我有一个不同的错误。

我在构建输出

中有这个错误
Target RazorGenerateComponentDeclaration:
/usr/local/share/dotnet/dotnet exec "/Users/redacted/Library/Caches/VisualStudio/17.0/MSBuild/36265_3/Sdks/Microsoft.NET.Sdk.Razor/build/netstandard2.0/../../tools/netcoreapp3.0/rzc.dll" generate
-s
/Users/redacted/Developer/repositories/bcee/Toolkit/MyCompany.Toolkit.Platform.Web/_Imports.razor
-r
_Imports.razor
-o
/Users/redacted/Developer/repositories/bcee/Toolkit/MyCompany.Toolkit.Platform.Web/obj/Debug/netstandard2.1/RazorDeclaration/_Imports.razor.g.cs
-k
component
-p
/Users/redacted/Developer/repositories/bcee/Toolkit/MyCompany.Toolkit.Platform.Web
-t
obj/Debug/netstandard2.1/MyCompany.Toolkit.Platform.Web.RazorComponents.declaration.json
-v
3.0
-c
Default
--root-namespace
MyCompany.Toolkit.Web
--csharp-language-version
8.0
--generate-declaration

The application to execute does not exist: '/Users/redacted/Library/Caches/VisualStudio/17.0/MSBuild/36265_3/Sdks/Microsoft.NET.Sdk.Razor/build/netstandard2.0/../../tools/netcoreapp3.0/rzc.dll'
/Users/redacted/Library/Caches/VisualStudio/17.0/MSBuild/36265_3/Sdks/Microsoft.NET.Sdk.Razor/build/netstandard2.0/Microsoft.NET.Sdk.Razor.Component.targets(106,5): error : rzc generate exited with code 129.
Done building target "RazorGenerateComponentDeclaration" in project "MyCompany.Toolkit.Platform.Web.csproj" -- FAILED.
Done building project "MyCompany.Toolkit.Platform.Web.csproj" -- FAILED.
Build FAILED.

tools目录不存在

Xamarin工具链是建立在Mono上的,所以你在VS Mac中触发的一切都是由MSBuild for Mono处理的(在Mac终端,你可以使用msbuild --version来了解更多)。

dotnet build是专门为。net Core项目设计的,所以默认情况下它不能处理Xamarin项目,只能处理。net MAUI。

由于遗留Xamarin项目很快就会消失,您应该尽快开始迁移到MAUI,

https://dotnet.microsoft.com/en-us/platform/support/policy/xamarin

一开始,你说:

当我从Visual Studio构建时,我没有任何问题。

原因应该是当您从Visual Studio构建时。你的项目使用的框架是。netstandard 2.0。你可以查看项目。csproj文件和/usr/local/share/dotnet/SDK中的SDK.

另外,您可以检查这个与您的错误相似的情况。根据它,如果。net版本不兼容xamarin也会得到这个错误。dotnet/sdk/7.0.102应该是兼容。net maui的。net 7,而不是xamarin。所以你不能使用。net来构建项目。

你可以尝试找到正确的值的MSBuildExtensionsPath和设置它在android和ios .csproj文件中根据这种情况,这是关于设置项目的MSBuildExtensionsPath。

最后,您可以尝试在这种情况下的解决方案,它有相同的错误信息。

最新更新