Visual Studio(C#)使用环境变量构建输出路径

时间:2011-04-01 15:09:34

标签: c# visual-studio-2008 build

是否有可能在VS 2008(等)的构建输出路径中使用环境变量/我正在尝试找到一个解决方案,我的团队中的几个开发人员同时使用Windows XP& 7和所有具有不同Windows登录的所有人都可以修改项目共同引用的dll(源安全上保存的源)并且不会搞砸相对路径?我已经尝试过%userprofile%和$(userprofile)。

我已经研究了构建后事件,但这些似乎并没有真正解决我的问题。可悲的是,我不能使用第三方附加组件,因为这些是非商业性的,并且几乎不可能获得任何许可证的授权。

Output path for build in visual studio 2010处的类似未答复的问题)

5 个答案:

答案 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再次拯救):

http://technet.microsoft.com/en-us/sysinternals/bb896768