【问题标题】:Is there a way to unload custom MSBuild task from MSBuild process?有没有办法从 MSBuild 进程中卸载自定义 MSBuild 任务?
【发布时间】:2020-09-27 16:48:58
【问题描述】:

我的自定义 MSBuild 任务与依赖项位于同一文件夹中 (我将来自 NuGet 的其他 .NET 程序集与我的任务一起复制到单独的文件夹中,因为 MSBuild 无法在 NuGet 包缓存等其他地方找到引用,所以我使用 @(ReferencePathWithRefAssemblies) 获取所有项目引用,因为我的任务是 NuGet包其他引用将由 NuGet 自动安装)。 问题是我需要清理这个文件夹,然后再次从构建复制引用以确保在加载任务()之前所有 NuGet 引用都在那里,但是一旦我的任务加载,MSBuild 持有文件锁,所以我无法清理这个文件夹起来。 通过停止所有 MSBuild.exe 进程,我可以释放所有锁并且文件夹清理工作顺利。 那么是否有某种方法可以指示 MSBuild 在构建完成后卸载我的任务和所有依赖程序集?

【问题讨论】:

    标签: c# .net msbuild nuget


    【解决方案1】:

    目前看来唯一的解决方案是将环境变量MSBUILDDISABLENODEREUSE 设置为1,以便指示MSBuild 在构建完成后杀死所有节点,因此不再持有锁。使用自定义 .dll 任务实现了这一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-26
      • 2012-10-29
      • 1970-01-01
      • 2012-03-16
      • 2011-11-27
      • 1970-01-01
      相关资源
      最近更新 更多