我正在将我的项目从VS2010转换为VS2012.But在某些项目中出现_MSC_VER链接器错误。 通过谷歌漫长的冲浪后,我发现这个问题是由于在VS2010中创build的库链接到VS2012。 我怎样才能找出哪个项目导致错误? 在这里我引用了这个错误: Error 6 error LNK2038: mismatch detected for '_MSC_VER': value '1600' doesn't match value '1700' in CppFile1.obj D:\ProjectLocation\Projectname1.lib(CppFile2.obj) Projectname2 Error 15 error LNK2001: unresolved external symbol "private: static void __cdecl std::locale::facet::_Facet_Register(class std::locale::facet *)" (?_Facet_Register@facet@locale@std@@CAXPAV123@@Z) D:\ProjectLocation\Projectname1.lib(CppFile3.obj) Projectname2 Error 13 error LNK2038: mismatch detected for '_MSC_VER': value '1600' doesn't match value '1700' in CppFile1.obj […]
在使用msbuild编译时,.NET 3.5解决scheme最终会出现此警告。 有时NDepend可能会帮忙,但在这种情况下,它没有提供任何进一步的细节。 像Bob一样,我不得不打开ILDASM中的每个程序集,直到find引用相关程序集旧版本的程序。 我曾尝试使用VS 2010 Beta 2中的MSBUILD(因为Connect文章指出这已在下一个版本的CLR中修复),但是并没有提供更多的细节(可能是Beta 2的固定版本) 有更好的(更自动的)方法吗?
如果目标框架是较新的版本,那么我的项目的代码可能会大大改善。 我希望能够更好地利用C#中的条件编译来根据需要切换它们。 就像是: #if NET40 using FooXX = Foo40; #elif NET35 using FooXX = Foo35; #else NET20 using FooXX = Foo20; #endif 有没有这些符号是免费的? 我是否需要注入这些符号作为项目configuration的一部分? 似乎很容易做,因为我知道哪个框架是从MSBuild目标。 /p:DefineConstants="NET40" 更新:我的问题是人们如何处理这种情况? 你正在创build不同的configuration? 你是否通过命令行传递常量?
我有我的Visual Studio解决scheme中的四个项目(每个人都针对.NET 3.5) – 对于我的问题,只有这两个是重要的: MyBaseProject < – 这个类库引用第三方DLL文件(elmah.dll) MyWebProject1 < – 此Web应用程序项目具有对MyBaseProject的引用 我通过点击“添加引用…”→“浏览”选项卡→select“elmah.dll”,在Visual Studio 2008中添加了elmah.dll引用到MyBaseProject 。 Elmah参考的属性如下: 别名 – 全球 复制本地 – 真实 文化 – 说明 – 错误logging模块和处理程序(ELMAH)for ASP.NET 文件types – 组装 path – D:\ webs \ otherfolder \ _myPath \ __ tools \ elmah \ Elmah.dll 解决 – 真的 运行时版本 – v2.0.50727 指定的版本 […]
我想要一个msbuild任务来编译的意见,所以我可以看到是否有编译时错误,以及编译时间。 有任何想法吗?