gpt4 book ai didi

c# - 如何从多个源文件创建 MSBuild 内联任务

转载 作者:太空狗 更新时间:2023-10-29 23:14:34 24 4
gpt4 key购买 nike

我有几个 CS 文件(一个 DLL 项目),都在一个目录中,其中一个类扩展了 ITask。现在,如何从一个源文件创建内联任务很容易并记录在案,但是是否可以从多个源文件执行此操作?我无法将 DLL 编译和使用作为一项任务,如果我不必将所有源代码塞进一个大源文件中,我会更愿意。

我的目标是:

<UsingTask TaskName="foo" TaskFactory="CodeTaskFactory" AssemblyFile="Microsoft.Build.Tasks.v4.0.dll">
<Task>
<Code Type="Class" Language="cs" Source="mydir\*.cs"/>
</Task>
</UsingTask>

最佳答案

由于没有其他答案,这里有一个从任意数量的源文件构建 dll 的完整示例,就像评论中提到的那样。两个源文件:

一些任务.cs:

using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
using Bar;

namespace Foo
{
public class CustomTask : Task
{
public override bool Execute()
{
Log.LogWarning( LogString.Get() );
return true;
}
}
}

sometask_impl.cs:

namespace Bar
{
public static class LogString
{
public static string Get()
{
return "task impl";
}
}
}

以及带有使用 Foo.CustomTask 的目标的 msbuild 文件,但首先构建它:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="MyBuild">

<PropertyGroup>
<SomeTaskDll>SomeTask.dll</SomeTaskDll>
</PropertyGroup>

<Target Name="BuildSomeTaskDll">
<Csc Sources="$(MSBuildThisFileDirectory)sometask*.cs"
References="System.dll;mscorlib.dll;Microsoft.Build.Framework.dll;Microsoft.Build.Utilities.v4.0.dll"
TargetType="Library" OutputAssembly="$(MSBuildThisFileDirectory)$(SomeTaskDll)"/>
</Target>

<UsingTask TaskName="Foo.CustomTask" AssemblyFile="$(SomeTaskDll)"/>

<Target Name="MyBuild" DependsOnTargets="BuildSomeTaskDll">
<Foo.CustomTask />
</Target>

</Project>

相关输出:

> msbuild sometask.targets
Project sometask.targets on node 1 (default targets).
BuildSomeTaskDll:
<here it's building SomeTask.dll>

sometask.targets(17,5): warning : task impl

关于c# - 如何从多个源文件创建 MSBuild 内联任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25089520/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com