在Visual Studio App Center中构建Xamarin iOS应用时失败:如果使用/unsafe编译,则不得出现不安全的代码。

7
我想在Visual Studio App Center中构建一个Xamarin iOS应用程序。该解决方案包含两个项目。一个是Xamarin iOS项目。另一个是绑定库项目。绑定库项目配置了允许'不安全'代码选项。

enter image description here

但是 App Center 中的 Xamarin.iOS 构建任务失败,显示以下错误信息:

如果不使用 /unsafe 编译,则无法使用不安全代码。

enter image description here

我能够在本地构建解决方案而没有任何问题。

有人有什么想法吗?


尝试了不同的方法后,我从构建配置中的.csproj文件切换到了.sln文件。

enter image description here

有人能验证这个吗?


1
你可以在切换到“发布”配置后检查设置是否仍然被选中吗? - Martin Ullrich
当我查看msbuild调用时,没有传递/unsafe开关。[command]/Library/Frameworks/Mono.framework/Versions/5_4_1/bin/msbuild /Users/vsts/agent/2.127.0/work/1/s/ios-xamarin/App.csproj /p:Configuration=Release /p:Platform=iPhoneSimulator /t:Rebuild也许不支持/unsafe开关? - Luca
1
不安全的参数将被传递给编译器,而不是 MSBuild。MSBuild 逻辑仅使用在 csproj 文件中定义的 AllowUnsafeBlocks 属性将其传递给编译器。如果此属性在任何带有可能影响构建的 Condition 属性的元素下定义,请检查 csproj 文件。 - Martin Ullrich
当你说“本地使用”时,你是否传递了相同的参数?特别是/p:Configuration=Release - Martin Ullrich
感谢您明确指出msbuild正在使用.csproj内容将事物传递给csc。我之前并不知道这一点。当我说本地时,我是指在我的本地机器上构建。这个本地构建从Visual Studio和通过终端使用msbuild都可以成功。即使使用/p:Configuration=Release参数也是如此。 - Luca
显示剩余5条评论
2个回答

3
在使用App Center构建时,您可能会遇到以下错误:error CS0227: Unsafe code may only appear if compiling with /unsafe。请尝试从.sln文件进行构建,以便您的PCL配置得到支持,或者将启用unsafeRelease|iPhone(或您正在尝试构建的配置)配置添加到PCL/.NET标准项目中。原因是:在从.csproj文件构建时,msbuild期望所有引用的项目具有相同的配置名称,因为通常在PCL项目中没有*|iPhone部分,所以无法知道如何将iOS项目配置Release|iPhone映射到PCL项目中的配置。文档参考-https://learn.microsoft.com/en-us/appcenter/build/xamarin/ios/#312-building-from-the-project-file-csprojfsproj

0
我有一个 Xamrin.ios 项目,本地构建时选中了“允许不安全代码”框,但在尝试在 AppCenter 上构建时出现了相同的错误。
为了使其成功构建,我将 AllowUnsafeBlocks 添加为环境变量,然后将其设置为 true。
我试图弄清楚在哪里将其添加为 msbuild 命令,就像这个人建议的那样 https://dev59.com/sFkT5IYBdhLWcg3wKsWq#50755461 对于我来说,将其作为环境变量工作。当我删除环境变量时,构建失败。 build setup

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接