【问题标题】:How to include files using a pattern based on build configuration?如何使用基于构建配置的模式包含文件?
【发布时间】:2019-06-25 17:00:37
【问题描述】:

我有一个具有以下文件夹结构的网站:

Solution
 -App
 -Extra
   -Folder1
   -Folder2

在 Folder1 和 Folder2 中创建的程序集没有被 App 引用,所以我必须在构建发布时添加它们:

所以我做到了:

<ItemGroup>
  <_Files Include="..\Extra\**\Extra*.dll;..\Extra\**\Extra*.pdb" />
  <FilesForPackagingFromProject Include="%(_Files.Identity)">
    <DestinationRelativePath>bin\%(Filename)%(Extension)</DestinationRelativePath>
  </FilesForPackagingFromProject>
</ItemGroup>

上面没有考虑构建配置。我应该如何以及在哪里使用 $Configuration 以便从正确的 bin 文件夹中获取包含的文件?

【问题讨论】:

  • 可以使用Condition属性进行选择,但是可以根据$Configuration指定需要修改的地方吗?
  • 你的 Folder1 和 Folder2 的结构是什么?
  • @LanceLi-MSFT 标准 .NET 项目结构
  • @Ivan-MarkDebono 您可以在脚本中使用 $(Configuration)。它代表debug模式下的Debug,代表Release模式下的Release。但是我对that files included are taken from the correct bin folder? 有点困惑,我假设您的意思是Folder1 和Folder2 下的bin 文件夹?希望我没有误会:(
  • @LanceLi-MSFT 是的。文件夹 1(& 2 等)具有以下结构:bin\Release\net471bin\Debug\net471,具体取决于构建配置。

标签: c# visual-studio msbuild


【解决方案1】:

假设您的解决方案的实际结构应该是:

Solution
 -App
 -Extra
   -Folder1
     -bin
       -Debug
       -Release
   -Folder2
     -bin
       -Debug
       -Release

那么脚本可能是这样的:

<ItemGroup>
  <_Files Include="..\Extra\**\**\$(Configuration)\net471\Extra*.dll;..\Extra\**\**\$(Configuration)\net471\Extra*.pdb" />
  <FilesForPackagingFromProject Include="%(_Files.Identity)">
    <DestinationRelativePath>bin\%(Filename)%(Extension)</DestinationRelativePath>
  </FilesForPackagingFromProject>
</ItemGroup>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-23
    • 1970-01-01
    • 2022-01-10
    • 2015-07-13
    相关资源
    最近更新 更多