将 Visual Studio 2005 sln 迁移到 2008,在 LIB 环境变量中使用 vc98 路径发出警告,如何解决?

Posted

技术标签:

【中文标题】将 Visual Studio 2005 sln 迁移到 2008,在 LIB 环境变量中使用 vc98 路径发出警告,如何解决?【英文标题】:Migrating Visual Studio 2005 sln to 2008, warning with vc98 paths in LIB environment variable, how to fix? 【发布时间】:2009-05-05 21:11:50 【问题描述】:

我正在将解决方案从 Visual Studio 2005 迁移到 Visual Studio 2008。当我在 2005 年构建解决方案时,我没有任何问题。但是,在我使用 devenv.exe /Upgrade 然后在解决方案上使用 msbuild 之后,我收到以下警告:

CSC : 警告 CS1668: Invalid search path '\vc98\lib' specified in 'LIB environment variable' -- '系统找不到指定的路径。' CSC : 警告 CS1668: Invalid search path '\vc98\mfc\lib' specified in 'LIB environment variable' -- '系统找不到指定的路径。 ' CSC : 警告 CS1668: Invalid search path 'c:\program files\microsoft visual studio 9.0\vc\platformsdk\lib' specified in 'LIB environment variable' -- '系统找不到指定的路径。'

我检查了http://social.msdn.microsoft.com/Forums/en-US/Vsexpressinstall/thread/3f875480-fee2-4bc3-b829-95e220b22a01,但它没有为我提供任何帮助,因为我的 LIB 和 INCLUDE 环境变量未在用户变量或系统变量中设置。我查看了 Studio 的工具 > 选项 > 项目和解决方案 > VC++ 目录,没有任何引用任何旧的东西:

库文件: $(VCInstallDir)库 $(VCInstallDir)atlmfc\lib $(VCInstallDir)atlmfc\lib\i386 $(WindowsSdkDir)\lib $(FrameworkSDKDir)库 $(VSInstallDir) $(VSInstallDir)库

包含文件:

$(VCInstallDir)包括 $(VCInstallDir)atlmfc\include $(WindowsSdkDir)包括 $(FrameworkSDKDir)包括

我使用了诊断输出,以便我可以准确地看到 LIB 变量在被调用时包含的内容:

lib = c:\Program Files\Microsoft Visual Studio 9.0\VC\ATLMFC\LIB;c:\Program Files\Microsoft Visual Studio 9.0\VC\LIB;C:\Program Files\Microsoft SDKs\Windows\v6。 0A\lib;\vc98\lib;\vc98\mfc\lib;c:\program files\microsoft visual studio 9.0\vc\platformsdk\lib;c:\program files\microsoft visual studio 9.0\vc\lib;c: \程序文件\微软视觉工作室 9.0\vc\atlmfc\lib; LIBPATH = c:\Windows\Microsoft.NET\Framework\v3.5;c:\Windows\Microsoft.NET\Framework\v2.0.50727;c:\Program Files\Microsoft Visual Studio 9.0\VC\ATLMFC\LIB;c :\Program Files\Microsoft Visual Studio 9.0\VC\LIB

因此,如果 vc98 不在我的环境变量中,或者我的工作室设置和 vc98 甚至没有安装(也没有安装),那么该路径来自哪里?像这样设置 LIB env var 的过程是什么?

【问题讨论】:

【参考方案1】:

发现于MSDN:

是的,这是一个已知问题 对一些人。仔细看 你的 LIB 路径。在 ATLMFC、V、 SDK -> \vc98\lib.删除此条目 (以及接下来的那个)。如果 LIB 是一个用户变量,那么您将 需要重新启动 VS 或者注销 并重新开始。如果是系统 变量,那么您将不得不重新启动。 您的错误应该会消失。

【讨论】:

【参考方案2】:

解决办法

http://msdn.microsoft.com/en-us/library/tcbs315h(v=vs.80).aspx

它指的是环境变量中的 LIB 条目

【讨论】:

这基本上就是@compie 所说的......:/【参考方案3】:

似乎您已经涵盖了这里的大部分内容,所以我唯一能想到的就是继承的属性表。

它们在 vcproj XML 中指定(或者您可以在 IDE 中查看属性管理器):

<VisualStudioProject>
    <Configurations>
        <Configuration InheritedPropertySheets="stuff.vsprops">...

如果您确实有一些继承的属性表,请查看文件,看看您是否明确设置了任何 vc98 库路径?

【讨论】:

不。我在任何正在迁移的 VCProj 文件中都没有单个 InheritedPropertySheets 属性。 很抱歉听到迈克的消息。这是我的最佳猜测。 无需道歉。我希望一些 Microsofty 会知道发生了什么。 我的手指交叉了。我很想知道问题出在哪里。【参考方案4】:

我想知道这是否可能是由于在使用与 C 运行时库相关的 VS2005 时发生的 /ML 和 /MLd 中的编译器开关 /MT 和 /MTd 发生了变化?

参考这里看看是否有帮助: http://msdn.microsoft.com/en-us/library/abx4dbyh.aspx

【讨论】:

还没有机会检查这个。希望今天或明天我能做到。【参考方案5】:

我在 VS.NET2010 中遇到了与 C# 项目非常相似的问题。它似乎只影响那些导入 C++/CLI 项目的项目。这些项目仍设置为使用 v9.0 工具集(C++、C++/CLI)和 .NET 3.5(C++/CLI、C#)进行编译。您是否有幸找到了问题的根源?

我通过在受影响项目的属性中将警告 1668 添加到忽略的警告列表中来解决此问题。这并不理想,但比我的警告列表中的垃圾邮件要好。

【讨论】:

以上是关于将 Visual Studio 2005 sln 迁移到 2008,在 LIB 环境变量中使用 vc98 路径发出警告,如何解决?的主要内容,如果未能解决你的问题,请参考以下文章

从 Visual Studio 2012 中浏览 Qt 5.1.1 基本源 - 将 .pro 转换为 .sln 文件

如何强制在 Visual Studio 2013 中打开解决方案文件 (SLN)?

如何分离 Visual Studio 2013 项目的开发和生产 *.sln

使用部分类和设计器文件将 Visual Studio 2003 表单转换为 Visual Studio 2005/2008 表单

将crm 4插件项目从visual studio 2005升级到visual studio 2010

是否可以从 Mono 的命令行构建 MSBuild 文件(visual studio sln)?