首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否可以编写依赖于C#包的嵌入式NuGet自定义msbuild任务?

是否可以编写依赖于C#包的嵌入式NuGet自定义msbuild任务?
EN

Stack Overflow用户
提问于 2022-06-01 05:02:35
回答 1查看 78关注 0票数 0

我不想将msbuild任务打包到dll中。相反,我想在一个独立的源文件中提供它的C#代码,并定义如下:

代码语言:javascript
运行
复制
<UsingTask TaskName="MyTask" TaskFactory="RoslynCodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.Core.dll">
  <Task>
    <Code Source="$(MSBuildThisFileDirectory)\MyTask.cs" Language="cs" />
  </Task>
</UsingTask>

原因-我不想将我的任务作为DLL提交到版本控制中,因为如果我更改它,如果原始DLL是由msbuild节点加载的,则devs可能无法提取更改的DLL。这会引起我喜欢避免的各种摩擦。

但问题是-如果我的任务必须依赖于第三方DLL呢?我可能会去做,因为我不会改变它,但是之后呢?

那么,我的问题--是否有一种方法可以将作为C#源文件分发的自定义msbuild任务引用第三方DLL,例如NuGet包?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-20 01:32:57

您正在创建的任务类型在MSBuild文档中称为“内联任务”。使用内联任务删除构建脚本中的依赖项是有意义的。

不幸的是,内联任务不支持NuGet。没有用于内联任务的PackageReference。您可以有一个NuGet步骤来还原给定的包,并且可以在内联任务中添加一个Reference到包的已知位置,但这会开始变得混乱,并产生一些依赖和鸡/蛋问题,我认为这是您想要避免的。

如果您无法避免NuGet包依赖,并且您有一个私有和/或内部的NuGet服务器,那么您可以考虑将自定义任务移动到它自己的DLL和它自己的构建和NuGet包中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72456641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档