为啥我会收到错误“不安全代码可能仅在使用 /unsafe 编译时出现”?
Posted
技术标签:
【中文标题】为啥我会收到错误“不安全代码可能仅在使用 /unsafe 编译时出现”?【英文标题】:Why do I get the error "Unsafe code may only appear if compiling with /unsafe"?为什么我会收到错误“不安全代码可能仅在使用 /unsafe 编译时出现”? 【发布时间】:2011-01-02 20:11:39 【问题描述】:为什么会出现以下错误?
只有在使用 /unsafe 编译时才会出现不安全代码?
我使用 C# 和 Visual Studio 2008 在 Windows CE 上进行编程。
【问题讨论】:
见msdn.microsoft.com/en-us/library/ezb5hwx9%28VS.80%29.aspx和msdn.microsoft.com/en-us/library/t2yzs44b%28VS.80%29.aspx I can seem to get msbuild to build unsafe code blocks的可能重复 【参考方案1】:要使用不安全的代码块,必须在打开 /unsafe 开关的情况下编译项目。
打开项目的属性,转到Build
选项卡并选中Allow unsafe code
复选框。
【讨论】:
我必须说,即使这确实使构建能够编译,它仍然不允许它发布到网络:/ @Nick:是的,如果您发布要动态编译的代码,则项目设置不适用。见***.com/questions/16567197/… 请注意,调试和发布编译的设置可能不同。这只是花费了我 20 分钟的生命。 简单快速的解决方案..太棒了。 对于不同类型的构建,您可能需要将构建配置从调试更改为发布【参考方案2】:这是截图:
ََََََََ
【讨论】:
重要提示:另外请注意,此屏幕截图适用于“配置:活动(调试)”。您可能还需要将其更改为“发布”,因为这很可能是您要发布的内容。【参考方案3】:可能是因为您使用了不安全的代码。
您是否在某处使用指针或非托管程序集?
【讨论】:
【参考方案4】:在您的代码中搜索unsafe
块或语句。这些仅在使用/unsafe
编译时有效。
【讨论】:
【参考方案5】:要使用不安全的代码块,请打开项目的属性,转到构建选项卡并选中允许不安全的代码复选框,然后编译并运行。
class myclass
public static void Main(string[] args)
unsafe
int iData = 10;
int* pData = &iData;
Console.WriteLine("Data is " + iData);
Console.WriteLine("Address is " + (int)pData);
输出:
Data is 10
Address is 1831848
【讨论】:
【参考方案6】:对于使用 Rider 的每个人,您必须选择您的项目>右键单击>属性>配置,然后选择调试和发布并选中 both 的“允许不安全代码”。
【讨论】:
以上是关于为啥我会收到错误“不安全代码可能仅在使用 /unsafe 编译时出现”?的主要内容,如果未能解决你的问题,请参考以下文章