【问题标题】:How to disable automatic selection of frameworks in PCL projects?如何在 PCL 项目中禁用自动选择框架?
【发布时间】:2013-12-19 12:12:50
【问题描述】:

在 Visual Studio 2013 的可移植类项目中,当我选择

  • .NET Framework 4 及更高版本
  • Windows 应用商店应用 (Windows 8) 及更高版本
  • Windows Phone 8

Visual Studio 声称 Silverlight 5 支持在我选择的其他框架之间可移植的所有可用功能并自动选择它。但这是错误的,因为我需要使用 /unsafe 编译器选项,这在 Silverlight 应用程序中是不可能的。

我选择 .NET Framework 4.5 而不是 4 作为解决方法,因此 Visual Studio 不会自动选择 Silverlight 5,但由于该项目也与 .NET Framework 4 完美兼容,因此不需要它。

我该如何解决这个问题?
我可以在项目文件中更改什么,例如ProjectTypeGuids

【问题讨论】:

    标签: msbuild visual-studio-2013 portable-class-library


    【解决方案1】:

    嗯,你当然可以绕过它。只需对 PCL 项目的 .csproj 文件进行一些操作。在文本编辑器中打开它,记事本就可以了,并将这一行添加到 <PropertyGroup>,在 ProjectTypeGuids 属性之后:

      <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
    

    这足以欺骗 MSBuild 和编译器,让您使用不安全的代码。

    我想不出任何失败的场景,当您在 PCL 项目中进行更改并重写 .csproj 文件时,您也不会丢失该属性。你唯一的克星可能是一个超级活跃的商店验证器,它会拒绝你的应用程序,我认为几率非常低,因为不安全的代码在其他方面很好。只是不要在 Silverlight 项目中使用它:)

    【讨论】:

    • 对不安全的块很有魅力,+1,谢谢。但事实证明,选择 Silverlight 的限制比我想象的要多。我不能在使用指针的框架中使用任何 API(例如,String 只有三个构造函数)并且没有 StructLayout.Pack 属性。我会更新问题。
    • 这就是结束的地方,你不能神奇地让丢失的声明重新出现。当然你可以通过复制来解决这个问题。
    猜你喜欢
    • 1970-01-01
    • 2020-10-16
    • 1970-01-01
    • 1970-01-01
    • 2021-05-22
    • 2021-10-29
    • 2018-07-21
    • 1970-01-01
    • 2012-06-12
    相关资源
    最近更新 更多