是否有可能在VS 2008(等)的构建输出路径中使用环境变量/我正在尝试找到一个解决方案,我的团队中的几个开发人员同时使用Windows XP& 7和所有具有不同Windows登录的所有人都可以修改项目和共同引用的dll(源安全上保存的源)并且不会搞砸相对路径?我已经尝试过%userprofile%和$(userprofile)。
我已经研究了构建后事件,但这些似乎并没有真正解决我的问题。可悲的是,我不能使用第三方附加组件,因为这些是非商业性的,并且几乎不可能获得任何许可证的授权。
(Output path for build in visual studio 2010处的类似未答复的问题)
答案 0 :(得分:36)
您需要在文本编辑器中打开csproj文件,并在OutputPath部分中手动输入环境变量。当您尝试从IDE执行此操作时,Visual Studio会转义'$','('和')'。
答案 1 :(得分:2)
我过去曾使用subst命令完成此类操作。基本上所有项目引用都定义了与已知驱动器号相关的路径,如R:\MyProject\outputs
。
然后,每个开发人员都可以将R:
驱动器(或其他)映射到特定于其环境的文件夹结构。只要映射驱动器下面的文件夹结构相同,该映射文件夹的位置就可能因机器,构建和用户而异。
这很有效,因为开发人员可以使用简单的批处理文件设置他们的环境,并且可以在分支,项目等之间轻松切换,并且项目中的相对路径不会被破坏。
答案 2 :(得分:1)
PaulTee, 请问你尝试目录复制是一个远景吗?像Dropbox / Synctoy和其他工具一样调用从选择位置到预期共享位置的文件副本?
在您的情况下,我很乐意使用内置的环境变量。可能有一种方法可以使它工作,但在那之前我会寻求这样的解决方案。我还要记住,编译到同一目录的不同用户会与文件版本和文件锁(由其他用户使用)发生冲突。
答案 3 :(得分:1)
如果您不介意额外的副本,您可以添加将项目输出复制到共享dll的共同约定位置的构建后事件,并且每个人都使用对该位置的非相对引用。但是,它仍然需要 目标位置的标准化,所以也许它不是你想要的。 (以下示例至少允许驱动器号独立)
复制$(TargetPath)\ dependencies
答案 4 :(得分:0)
虽然我不太明白你的要求,但听起来像符号链接的目录会有所帮助 - 你可以配置解决方案输出到某个文件夹,该文件夹将符号链接到每个盒子上的任意位置。
http://en.wikipedia.org/wiki/NTFS_symbolic_link
幽灵编辑 - mklink在7中显然是新的,但旧版本仍然支持它(Russinovich再次拯救):