相关疑难解决方法(0)

使用同一解决方案中的自定义MSBuild任务?

我是MSBuild的新手,想要稍微玩一下,但我无法弄清楚为什么这不起作用.

所以我的解决方案有两个项目:"Model"和"BuildTasks".BuildTasks只有一个类:

using Microsoft.Build.Utilities;

namespace BuildTasks
{
    public class Test : Task
    {
        public override bool Execute()
        {
            Log.LogMessage( "FASDfasdf" );
            return true;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在Model.csproj中我添加了这个:

  <UsingTask TaskName="BuildTasks.Test" AssemblyFile="$(SolutionDir)src\BuildTasks\bin\BuildTasks.dll" />
  <Target Name="AfterBuild">
    <Test />
  </Target>
Run Code Online (Sandbox Code Playgroud)

我已经设置了构建顺序,因此"BuildTasks"会在"Model"之前构建.但是,当我尝试构建模型时,我收到此错误:

无法从程序集C:\ WIP\TestSolution\src\BuildTasks\bin\BuildTasks.dll加载"BuildTasks.Test"任务.无法加载文件或程序集'file:/// C:\ WIP\TestSolution\src\BuildTasks\bin\BuildTasks.dll'或其依赖项之一.该系统找不到指定的文件.确认<UsingTask>声明是正确的,并且程序集及其所有依赖项都可用.

这个文件肯定存在,为什么MSBuild不能找到它呢?

我甚至尝试用硬编码"C:\ WIP\TestSolution"代替"$(SolutionDir)"并得到同样的错误.但是,如果我复制.dll文件到我的桌面和硬编码路径到我的桌面,它DOES工作,我想不通为什么.

编辑:我没有错路.我修改了BuildTasks的Debug/Release版本,将.dll输出到bin文件夹,因为我不希望Debug/Release有不同的路径.

.net msbuild

20
推荐指数
2
解决办法
1万
查看次数

标签 统计

.net ×1

msbuild ×1