VS后生成事件,如何将文件复制到解决方案文件夹的上一级?

17

我目前拥有

  <PropertyGroup>
    <PostBuildEvent>copy "$(TargetPath)" "$(SolutionDir)Shared.Lib\$(TargetFileName)"</PostBuildEvent>
  </PropertyGroup>

我想做类似于这样的事情,但是在$(SolutionDir)的上一级目录。

5个回答

34

你可以使用 ..\ 进入上级目录。

 <PropertyGroup>
    <PostBuildEvent>copy "$(TargetPath)" "$(SolutionDir)..\Shared.Lib\$(TargetFileName)"</PostBuildEvent>
  </PropertyGroup>

如果我只想复制一个特定的二进制文件,而不是复制所有输出文件怎么办? - bevacqua
你是说这行代码当前复制了多个文件吗?我期望 $(TargetPath) 指向你正在为项目构建的 exe/library。 - joncham
这个答案对我没用。这个可以。问题在于引号中的..\,它应该在外面。 - Eduardo Pignatelli

13

解决方案:

copy "$(TargetPath)" "$(SolutionDir)"..\"Shared.Lib\$(TargetFileName)"

如果在引号内部包含 ..\,它就会将其视为字面字符串,而不是运行DOS命令上移一级。


2
非常感谢。这正是所缺少的! - Bruno Bieri
1
非常感谢。这对我也起作用了,但是使用的是复制而不是xcopy。 - Alaa'

3

这在VS2010中无法工作... 问题没有得到解决,但成为路径的一部分。

Studio运行的命令类似于将drive$:\a\b\bin\debug复制到drive$:\a\b..\c


请确保您选择的路径存在,直到该路径实际存在,否则它对我来说是无效的。 - bevacqua

1
在 .Net Core 中编辑 csproj 文件:
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
  <Exec Command="copy /Y &quot;$(TargetPath)&quot; &quot;$(SolutionDir)&quot;..\&quot;lib\$(TargetFileName)&quot;" />
</Target>
< p > < code > /Y 抑制提示以确认您是否要覆盖现有的目标文件。


-1

xcopy "$(TargerDir)." "$(SolutionDir)..\Installer\bin\"

注意:"../" 用于表示上一级文件夹结构


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接