我想拥有不同的项目依赖项,具体取决于我目前正在构建的项目配置.
例如,我不想在Release配置中构建和链接SomeTestLib.vcproj,但我想在Debug中构建并链接到它.
一种解决方案,即sorta工作,是使用条件编译宏:
#ifdef DEBUG
#pragma comment( lib, "SomeTestLib" )
#endif
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,调试器和IntelliSense不适用于SomeTestLib.
是否有我可以使用的.sln或.vcproj hack?
谢谢.
有没有办法在Visual Studio 2008中打开Visual Studio 2010 beta 2中保存的解决方案文件?......或者也许是转换它的方法?
当我试图在VS 2008中打开它时,我收到一条错误消息"所选文件是一个解决方案文件,但是由该应用程序的较新版本创建,无法打开."
solution visual-studio-2008 visual-studio visual-studio-2010-beta-2
当我尝试打开我的.sln文件时,Visual Studio退出了我.我可以通过打开TFS,获取特定版本,选择最新版本,强制覆盖,打开.sln文件,然后忽略"不兼容的文档消息"来打开它.
但是,我想知道什么是错的以及如何修复它,以防有一天我不能这样做.
怎么解决这个问题?
我编写了一个小程序来下载解决方案的所有 NuGet 包。我想设置一个预构建事件,每次构建时都会运行该程序。
但我需要它在第一个项目开始构建之前运行。我可以先查看当前正在构建的内容,然后将其放在该项目的预构建事件中,但这相当脆弱。每当我添加新项目或更新项目之间的引用时,我都必须仔细检查“第一个”建筑项目是否仍然是第一个。
所以,我真正需要的是一种在任何建筑真正开始之前做到这一点的方法。我听说过 Visual Studio 宏。但这些不是被签入的东西,所以我宁愿不使用它们(但如果这是我唯一的选择,我会使用它们)。
solution visual-studio-2010 prebuild visual-studio pre-build-event
我已将 Visual Studio 解决方案复制到新计算机上。当我打开解决方案时,其中的一个项目将被卸载。当我重新加载项目时,它会出现一瞬间,然后立即再次卸载。
我在两台不同的计算机上遇到此问题,但在源计算机或具有此解决方案副本的任何其他计算机上都没有遇到此问题。在运行 Visual Studio 2010 的 Windows 7 计算机和 Windows 8.1 计算机上都会发生这种情况。
我尝试过的事情:
谢谢!
我正在开发一组相互依赖的库,并且我想生成这些库的多个版本,针对不同的 .NET 框架版本。果然,这是一个常见问题,并且有大量文档介绍.csproj如何以(更常提到的)configuration或(恕我直言更适合)platform变量包含目标框架的选择的方式编写文件。
所有库都采用通用解决方案。
现在,某些库具有仅在较新的 .NET 框架版本上可用的外部依赖项。因此,对于旧版本,构建相应的项目是没有意义的。
如何根据所选项目排除某些项目platform?
我想这个问题的答案一定是以下方法之一,但我找不到有关如何执行此操作的任何具体信息:
.sln文件中的一个设置,允许我有条件地从解决方案中排除某些项目。从MSDN 文档中,我不清楚文件中的任何项目是否.sln可以标记为仅在给定的一组设置处于活动状态时才构建。.csproj文件中的一个设置,允许我有条件地禁用编译(不会使编译失败,而是指示当前不应构建项目)。我的第一个猜测是OutputType设置,但它只允许Library, Exe, Module, 和Winexe; 没有诸如 之类的值None。当然,有一种解决方法是为.sln每个 .NET Framework 版本创建一个单独的文件,但这听起来很麻烦(因此很容易出错),因为将来任何附加库都必须添加到每个文件中.sln,因此是大量重复的解决方案代码和大量重复的工作。
.sln我更喜欢学习如何在和/或文件的源代码中执行此操作.csproj。
对于我的两个VS 2005 C++项目,VS在构建项目时想要写入.sln文件.我有许多其他的VS 2005 C++项目,但事实并非如此.这是一个问题,因为我们将ClearCase源代码控制与VS 2005安装集成在一起,当我们尝试通过批处理文件运行隔夜构建时,构建会在显示ClearCase签出对话框时暂停.
看看VS在.sln文件中的变化,它是项目行中的第二个GUID.
在建造之前:
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "InterCommClientB", "InterCommClientB.vcproj", "{A2AF232A-7F27-4340-81D5-8ABFD10994D2}"
Run Code Online (Sandbox Code Playgroud)
建成后:
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "InterCommClientB", "InterCommClientB.vcproj", "{67BE85B7-3234-484E-88FB-4F0E42096583}"
Run Code Online (Sandbox Code Playgroud)
任何帮助感激不尽.我是VS 2005的新手,因为我们最近才从VC++ 6.0迁移过来,所以如果我错过了一些明显的东西,我会道歉.
我们正在运行VS 2005 Professional Edition,安装了SP1.
问候,
格雷格.
我创建了一个全新的空白Visual Studio 2010解决方案,并向其中添加了一个现有的C#项目。我建立了解决方案,并且编译正确。
但是当我进入解决方案文件夹时,我看到导入的C#项目实际上不在该文件夹中。似乎它仅引用项目到任何地方。
这是故意的吗?我还要为此担心吗?
如何创建物理导入,这意味着将项目复制到解决方案文件夹?

我们正在开发一个非常大的VS项目.
我们希望项目结构能够"暗示"开发人员对逻辑组件和设计进行"提示".
为此目的,这是最好的:
我有一堆从Internet下载的解决方案(codeplex等),我想构建它们并在DLL上运行一个工具.我想通过自动化做到这一点.
有人建议使用MSBuild API,因为它可以很容易地获取错误信息并操纵MsBuild进一步获取其他信息.不幸的是,它很难记录如下:
谢谢!
solution ×10
c# ×3
msbuild ×2
automation ×1
corruption ×1
csproj ×1
guid ×1
prebuild ×1
tfs ×1
vcproj ×1