代码之家  ›  专栏  ›  技术社区  ›  Helic

引用项目中的Visual Studio生成事件

  •  0
  • Helic  · 技术社区  · 11 月前

    我有两个项目:项目B被根项目A引用。项目B在files子文件夹中有一些文本文件,我想复制到输出文件夹bin/debug。

    我将项目B中的构建后事件设置为

    xcopy /Y "$(ProjectDir)Files\*.txt" $(TargetDir)

    但是,当我构建项目A时,这些文件不会复制到项目A的bin/debug文件夹中

    Project B
     |
     |-Files
         |
         |-FileA.txt
         |-FileB.txt
    

    使用什么宏来指示正在构建的根项目,而不是$(TargetDir)?

    一种解决方法是将FileA.txt和FileB.txt作为“始终复制”进行营销,这样它们就会被复制到ProjectA/bin/debug/Files,在Project A配置中,我会将它们复制到bin/debug文件夹并删除Files bin/debug/子文件夹,但我觉得这是错误的方法,因为Project B应该负责所有这些事情。谢谢

    0 回复  |  直到 11 月前
        1
  •  0
  •   Zhenning Zhang    11 月前

    问题可能是由于$(ProjectDir)Files\*.txt不正确,因为$(ProjectDir)Files*.txt引用了Project A目录中的所有.txt文件。

    尝试将$(ProjectDir)Files*.txt替换为项目B的直接路径。

    如果要使用宏而不是直接路径,则需要使用XML在项目文件(如.csproj文件)中定义一个新宏。 例如:

    <PropertyGroup>
      <ProjectBDir>$(SolutionDir)ProjectB</ProjectBDir>    <!-- You need to write the project B path in this line. -->
    </PropertyGroup>
    

    然后使用Post build事件命令行:

    xcopy /Y "$(ProjectBDir)*.txt" "$(TargetDir)"
    

    有关定义宏的更多信息,请参阅MS文档: https://learn.microsoft.com/en-us/visualstudio/msbuild/msbuild-properties?view=vs-2022

    推荐文章