在我的项目中运行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。
最后,您可以尝试在这种情况下的解决方案,它有相同的错误信息。