小编Ant*_*onK的帖子

在装有Windows SDK 7.1但没有VS2010的PC上构建C++项目

我有一个在VS2010中开发的C++项目(某种类型的控制台32位应用程序),它在我的PC(Windows 7 32位)上构建得很好.我的PC安装了Microsoft SDK 7.0A,我认为它与VS2010捆绑在一起.
我尝试在构建服务器上构建项目,该服务器没有安装任何Visual Studio - 只有Microsoft SDK 7.1存在.
我尝试在msbuild的帮助下构建项目(这最终将成为TeamCity的运行者的任务),并且在构建服务器上我得到以下错误(提供了详细的日志):

Project "E:\win\core.sln" on node 1 (default targets).
ValidateSolutionConfiguration:
  Building solution configuration "Debug|Win32".
Project "E:\win\core.sln" (1) is building "E:\win\core_unittests.vcxproj" (2) on node 1 (default targets).
Project "E:\win\core_unittests.vcxproj" (2) is building "E:\cpptest\win\cpptest.vcxproj" (3) on node 1 (default targets).
C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.Targets(847,9): warning MSB3644: The reference assemblies for framework ".NETFramework,Version=v4.0" were not found. To resolve this, install the SDK or Targeting Pack for this framework version or retarget your application to a version …
Run Code Online (Sandbox Code Playgroud)

winapi visual-studio-2010 visual-c++ msbuild-4.0

10
推荐指数
1
解决办法
1万
查看次数

使用相对网址的Git子模块

我使用git(TortoiseGit 1.7.5.0)并拥有一个带子模块的repo,它们通过以下方式通过绝对路径引用:

[submodule "common/sub"]
path = common/sub
url = ssh://localhost/lib/common/sub
Run Code Online (Sandbox Code Playgroud)

虽然super-repo被克隆为ssh://user@localhost/super,但用户名不应该进入每个子模块url,因为不同的用户应该使用自己的凭据来处理代码.
当拉/推子模块时,我必须输入我的登录名(不需要密码,因为我正在运行Pageant):用户名不会通过命令行传递给TortoisePlink.

在网上冲浪,我发现有几个帖子提到子模块的相对网址,但显然这种方法与TortoiseGit不兼容:我尝试了几种格式 - 程序经常崩溃.无论如何,我成功的格式如下:

[submodule "common/sub"]
path = common/sub
url = ../common/sub
Run Code Online (Sandbox Code Playgroud)

该文件.git/config填充了正确的绝对URL,但在那之后TortoiseGit崩溃了......

我已经回顾了其他选项,包括:

  1. 使用gitolite(这里提出)或sdorra(这里提出),但这看起来像一个过于复杂的解决方案.

  2. 遵循子树合并策略(如建议在这里).这看起来很不错.

其中一个工作解决方法是使用"非标准"URL初始化子模块,git子模块解释结束时所述(此处链接已在此处找到).

我想一些更简单的解决方法可能对我的情况有帮助(比如在某些本地配置文件中或通过命令行提供默认登录),但我没有找到任何可行的提示.

这个问题:什么是使用子模块没有绝对URL硬编码的用户名的最简单的方法?

git tortoisegit git-submodules

8
推荐指数
1
解决办法
3103
查看次数

由于修改了无关的文件,VS2010重建了C++项目

正如我们所有人都已经知道的那样,VS2010已经对其构建系统进行了重大升级,该系统基于MSBuild.
根据MS代表的说法(参见Visual Studio 2010中的评论总是在休眠/重启计算机后重建项目)MSBuild现在将自己注入其他工具(如C++编译器,链接器等)以找出目标的依赖关系.
这种方法的一个缺点是,现在您的项目可能会因为无关文件的修改而被强制重建 :(
在我的情况下C:\PROGRAMDATA\NVIDIA CORPORATION\DRS\NVDRSDB0.BIN,它是由NVIDIA更新服务(Windows 7 32位)定期更改的.

我发现通过将VS2010选项" MSBuild项目构建输出详细程度 "和" MSBuild项目构建日志文件详细程度 "转换为" 诊断 ".
之后,我能够在Build Output窗口中看到问题的原因:

Task "CL" (TaskId:55)
  Read Tracking Logs: (TaskId:55)
    ..\..\temp\Release\Editor\cl.read.1.tlog (TaskId:55)
  Outputs for E:\USERS\A.USER.ORG\DEVEL\EDITOR\STDAFX.CPP: (TaskId:55)
E:\USERS\A.USER.ORG\DEVEL\TEMP\RELEASE\EDITOR\STDAFX.OBJ (TaskId:55)
  C:\PROGRAMDATA\NVIDIA CORPORATION\DRS\NVDRSDB0.BIN was modified at 23-Feb-12 12:08:20. (TaskId:55)
 stdafx.cpp will be compiled. (TaskId:55)
...
 Tracking command: (TaskId:55)
 C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\Tracker.exe ... stdafx.cpp /clr:nostdlib  (TaskId:55)
 stdafx.cpp (TaskId:55)
Done executing task "CL". (TaskId:55)
Run Code Online (Sandbox Code Playgroud)

其中一个解决方法是将不相关的文件添加到C++忽略列表:

<ItemGroup>
  <ClNoDependencies Include="NVDRSDB0.BIN" …
Run Code Online (Sandbox Code Playgroud)

visual-studio-2010 msbuild-4.0

8
推荐指数
1
解决办法
2427
查看次数