如何在Visual Studio 2013中禁用mscorlib.dll?

6
我正在尝试在Visual Studio 2013中使用自定义标准库,但似乎无法解决问题。我可以在命令行中使用/nostdlib编译而没有问题,虽然我想能够在IDE中利用智能感知功能。我已经删除了除我的自定义corelib之外的所有引用,并出现了由于有两个变量mscorlib而导致的冲突代码错误。
VS文档说明如下:
“在Visual Studio开发环境中设置这个编译器选项”
1. 打开项目的属性页面。 2. 单击“生成”属性页面。 3. 单击“高级”按钮。 4. 修改“不引用mscorlib.dll”属性。
尽管如此,事实并非如此,因为此选项不存在。有人知道我如何在vs2013中禁用mscorlib.dll吗?

1
以前它在那里,但我刚在VS Express上检查了一下,也看不到它了...也许可以黑客项目文件?也许可以用便携式库来模拟它?在VS2010中肯定还在。 - leppie
似乎有缺失,我用VS 2013专业版检查了一下。我认为这是需要向微软支持团队求助的情况。 - Doc Brown
2
发现这篇论坛帖子:https://social.msdn.microsoft.com/Forums/windowsapps/en-US/34e15fbf-6281-49f3-9b22-5b98d416b0e6/vs2012-pro-advanced-build-setting-for-c-nostdlib-setting-is-not-showing-up?forum=visualstudiogeneral - 或许手动在项目文件中添加 <NoStdLib>True</NoStdLib> 可以帮助解决问题? - Doc Brown
2个回答

7

这是一个老问题,但是确实 - 尽管UI选项已经消失(或移动),且文档至今仍然误导人,你仍然可以通过在.csproj文件中添加<NoStdLib>True</NoStdLib>来复制此效果,位置应该在高级设置中的其他选项附近:

<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    ...
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <NoStdLib>True</NoStdLib>
    <TargetFrameworkProfile />
  </PropertyGroup>
...
</Project>

我一直在想自从VS 2010之后那个选项去哪了。很高兴你发了帖子。NoStdLib标签起作用了! - RBT

0

为了解决在Visual Studio 2017中的同样问题,可以在.csproj文件中添加以下Property Group声明(你可以从Visual Studio卸载项目,然后右键单击选择编辑)来消除编译器错误:

<PropertyGroup>
  <NoStdLib>true</NoStdLib>    
  <DisableHandlePackageFileConflicts>true</DisableHandlePackageFileConflicts>
</PropertyGroup>
...
<ItemGroup>
  <Reference Include="mscorlib">
  <HintPath>..\path to custom mscorlib.dll</HintPath>
</Reference>

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