msbuild - 如何禁用PCL项目中框架的自动选择?

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

在 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

最佳答案

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

  <AllowUnsafeBlocks>true</AllowUnsafeBlocks>

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

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

关于msbuild - 如何禁用PCL项目中框架的自动选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20681505/

相关文章:

c++ - C++ 临时变量应该保持不变吗?

c# - 如何将 PCL 转换为 .Net 标准库

c# - 静态枚举类的 Msbuild.exe 错误

tfs - 我们如何将ajaxmin创建的文件包含在MSBuild创建的msdeploy包中

vb6 - 在 TFS 2010 中构建 VB6 项目 - 正确的方法?

c# - Visual Studio 2013 或 2015 EditorPackage 无法持续​​正确加载

c# - System.Diagnostics.Process.HasExited 始终返回 true 并且 Process.Exited 事件处理程序始终在进程仍处于打开状态时命中

c# - 使用可移植类库作为 COM 接口(interface)

asp.net-web-api - 方法未找到 : 'Void Newtonsoft.Json.Serialization.DefaultContractResolver.set_IgnoreSerializableAttribute(Boolean)' (webapi and PCL)

c# - 单元测试项目坚持要求引用 EntityFramework