【发布时间】:2010-09-21 21:49:04
【问题描述】:
我是 MSBuild 的新手,想尝试一下,但我就是不明白为什么这不起作用。
所以我的解决方案有两个项目:“模型”和“BuildTasks”。 BuildTasks 只有一个类:
using Microsoft.Build.Utilities;
namespace BuildTasks
{
public class Test : Task
{
public override bool Execute()
{
Log.LogMessage( "FASDfasdf" );
return true;
}
}
}
然后在 Model.csproj 中我添加了这个:
<UsingTask TaskName="BuildTasks.Test" AssemblyFile="$(SolutionDir)src\BuildTasks\bin\BuildTasks.dll" />
<Target Name="AfterBuild">
<Test />
</Target>
我已经设置了构建顺序,因此“BuildTasks”在“Model”之前构建。但是当我尝试构建模型时,我得到了这个错误:
“BuildTasks.Test”任务无法 从程序集中加载 C:\WIP\TestSolution\src\BuildTasks\bin\BuildTasks.dll。 无法加载文件或程序集 'file:///C:\WIP\TestSolution\src\BuildTasks\bin\BuildTasks.dll' 或其依赖项之一。系统 找不到指定的文件。 确认
声明是正确的,并且 程序集及其所有依赖项是 可用。
这个文件肯定存在,为什么MSBuild找不到呢?
我什至尝试用硬编码“C:\WIP\TestSolution”代替“$(SolutionDir)”并得到同样的错误。但是,如果我将该 .dll 复制到我的桌面并将路径硬编码到我的桌面,它确实可以工作,我不知道为什么。
编辑:我没有路径错误。我修改了 BuildTasks 的 Debug/Release 构建以将 .dll 输出到 bin 文件夹,因为我不希望 Debug/Release 具有不同的路径。
【问题讨论】:
-
您解决问题了吗?我有同样的问题。
-
3 年没有解决方案?我遇到了这个问题,但这篇文章并没有帮助,因为不清楚问题是否已经解决......