如何在 Visual Studio 中为 Mac 设置 AutoGenerateBindingRedirects?
How to Set AutoGenerateBindingRedirects in Visual Studio for Mac?
我目前正在开发一个名为 ABCD 的 Xamarin.Forms 项目,使用 macOS Sierra v10.12.6 和 Visual Studio (VS) for Mac v7.3.2(设置步骤详细).
设置成功后,我继续如下操作:
右键单击主项目文件夹,我select选项。
在 Build 下,在 General 下,在 Target Framework 下: .NET Portable:PCL 4.5 - Profile111 已自动 select 为我编辑。
我把它切换到它上面的选项:.NET 标准平台:netstandard1.5;然后 select OK.
切换这个框架后,我重新构建项目。重建后出现警告:
Warning MSB3276: Found conflicts between different versions of the same dependent assembly. Please set the "AutoGenerateBindingRedirects" property to true in the project file. For more information, see http://go.microsoft.com/fwlink/?LinkId=294190. (MSB3276) (ABCD.iOS)
所以这可能是因为 NETStandard.Library 包已经过时了。
在主 Packages 文件夹中,右键单击 NETStandard.Library 说版本 1.6.0,但在 Terminal 中输入 dotnet --version 显示 2.1.3,所以我在 VS 中更新 NETStandard.Library - 接受出现的许可证。
重建后同样的警告仍然存在。
所以我去微软link 提供的警告并按照他们的instructions 将<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
添加到各种.csproj 文件
我将其添加到主 .csproj 文件中,重建项目并收到相同的警告。
我将其添加到 iOS 和 Android .csproj 文件中,重建项目并得到相同的警告。
那么这是什么问题,为什么会如此顽固,如果我不理会它会给我带来多大的麻烦?
终于修复了这个警告,解决方案有点违反直觉。
尽管警告说 "Please set the "AutoGenerateBindingRedirects" 属性 为真
项目文件",只有将 <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
更改为 <AutoGenerateBindingRedirects>false</AutoGenerateBindingRedirects>
,警告才会消失。
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
我的经验是我们需要 <AutoGenerateBindingRedirects>
才能成为 true
。
我的开发环境:
- macOS 莫哈韦沙漠 10.14.2 (18C54)
- VisualStudio for Mac 专业版 7.7.4(内部版本 1)
#解法:
我所做的是按照以下 MS Doc(link) 中给出的说明进行操作。
- 从 Visual Studio Xamarin Forms 解决方案中卸载
MyBeautifulApp.Xamarin.iOS.csproj
。
- 使用 TextEdit 手动编辑
MyBeautifulApp.Xamarin.iOS.csproj
文件并添加以下行
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
到 PropertyGroup,它与您尝试构建并给出错误的构建配置相关。
- 保存
.csproj
文件。然后关闭文件并在 VS 解决方案资源管理器中重新加载项目。
- 然后清理并尝试构建,它应该成功构建而不会给出任何警告或错误。 -----> 对我来说这很有效。
注意: 我只编辑了 Xamarin.Forms iOS 应用程序项目的 .csproj
文件。因为 Xamarin.Forms 解决方案中的 Android 项目已经成功构建。
手动编辑我的 MyBeautifulApp.Xamarin.iOS.csproj
文件后,它看起来如下所示:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">iPhoneSimulator</Platform>
<ProductVersion>8.0.30703</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{asdf-7AC6-asdf-9890-asdf}</ProjectGuid>
<ProjectTypeGuids>{asdfasd-340asdf5-455asdfC-asdf-asdf};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<TemplateGuid>{6143fdea-f3c2-4a09-aafa-6e230626515e}</TemplateGuid>
<OutputType>Exe</OutputType>
<RootNamespace>MyBeautifulApp.Xamarin.iOS</RootNamespace>
<IPhoneResourcePrefix>Resources</IPhoneResourcePrefix>
<AssemblyName>MyBeautifulApp.Xamarin.iOS</AssemblyName>
<MtouchHttpClientHandler>NSUrlSessionHandler</MtouchHttpClientHandler>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
**<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>**
</PropertyGroup>
<PropertyGroup>
....For another build configuration related property group...
更进一步:我现在的问题是我是否应该对与其他构建配置相关的 .iOS.csproj 文件的所有其他 PropertyGroup 进行此更改?我很高兴从外面的人那里知道。但现在我决定不碰那些,直到它给我一个 warning/error 在未来。
希望这对那里的任何人都有帮助。
我目前正在开发一个名为 ABCD 的 Xamarin.Forms 项目,使用 macOS Sierra v10.12.6 和 Visual Studio (VS) for Mac v7.3.2(设置步骤详细
设置成功后,我继续如下操作:
右键单击主项目文件夹,我select选项。
在 Build 下,在 General 下,在 Target Framework 下: .NET Portable:PCL 4.5 - Profile111 已自动 select 为我编辑。
我把它切换到它上面的选项:.NET 标准平台:netstandard1.5;然后 select OK.
切换这个框架后,我重新构建项目。重建后出现警告:
Warning MSB3276: Found conflicts between different versions of the same dependent assembly. Please set the "AutoGenerateBindingRedirects" property to true in the project file. For more information, see http://go.microsoft.com/fwlink/?LinkId=294190. (MSB3276) (ABCD.iOS)
所以这可能是因为 NETStandard.Library 包已经过时了。
在主 Packages 文件夹中,右键单击 NETStandard.Library 说版本 1.6.0,但在 Terminal 中输入 dotnet --version 显示 2.1.3,所以我在 VS 中更新 NETStandard.Library - 接受出现的许可证。
重建后同样的警告仍然存在。
所以我去微软link 提供的警告并按照他们的instructions 将
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
添加到各种.csproj 文件我将其添加到主 .csproj 文件中,重建项目并收到相同的警告。
我将其添加到 iOS 和 Android .csproj 文件中,重建项目并得到相同的警告。
那么这是什么问题,为什么会如此顽固,如果我不理会它会给我带来多大的麻烦?
终于修复了这个警告,解决方案有点违反直觉。
尽管警告说 "Please set the "AutoGenerateBindingRedirects" 属性 为真
项目文件",只有将 <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
更改为 <AutoGenerateBindingRedirects>false</AutoGenerateBindingRedirects>
,警告才会消失。
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
我的经验是我们需要 <AutoGenerateBindingRedirects>
才能成为 true
。
我的开发环境:
- macOS 莫哈韦沙漠 10.14.2 (18C54)
- VisualStudio for Mac 专业版 7.7.4(内部版本 1)
#解法:
我所做的是按照以下 MS Doc(link) 中给出的说明进行操作。
- 从 Visual Studio Xamarin Forms 解决方案中卸载
MyBeautifulApp.Xamarin.iOS.csproj
。 - 使用 TextEdit 手动编辑
MyBeautifulApp.Xamarin.iOS.csproj
文件并添加以下行<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
到 PropertyGroup,它与您尝试构建并给出错误的构建配置相关。 - 保存
.csproj
文件。然后关闭文件并在 VS 解决方案资源管理器中重新加载项目。 - 然后清理并尝试构建,它应该成功构建而不会给出任何警告或错误。 -----> 对我来说这很有效。
注意: 我只编辑了 Xamarin.Forms iOS 应用程序项目的 .csproj
文件。因为 Xamarin.Forms 解决方案中的 Android 项目已经成功构建。
手动编辑我的 MyBeautifulApp.Xamarin.iOS.csproj
文件后,它看起来如下所示:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">iPhoneSimulator</Platform>
<ProductVersion>8.0.30703</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{asdf-7AC6-asdf-9890-asdf}</ProjectGuid>
<ProjectTypeGuids>{asdfasd-340asdf5-455asdfC-asdf-asdf};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<TemplateGuid>{6143fdea-f3c2-4a09-aafa-6e230626515e}</TemplateGuid>
<OutputType>Exe</OutputType>
<RootNamespace>MyBeautifulApp.Xamarin.iOS</RootNamespace>
<IPhoneResourcePrefix>Resources</IPhoneResourcePrefix>
<AssemblyName>MyBeautifulApp.Xamarin.iOS</AssemblyName>
<MtouchHttpClientHandler>NSUrlSessionHandler</MtouchHttpClientHandler>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
**<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>**
</PropertyGroup>
<PropertyGroup>
....For another build configuration related property group...
更进一步:我现在的问题是我是否应该对与其他构建配置相关的 .iOS.csproj 文件的所有其他 PropertyGroup 进行此更改?我很高兴从外面的人那里知道。但现在我决定不碰那些,直到它给我一个 warning/error 在未来。
希望这对那里的任何人都有帮助。