9

I have a UsingTask in my project, .Net 6. I have a small script to set the AssemblyVersion, using CodeTaskFactory. See code below. However, I cannot use or execute CodeTaskFactory on the build server using MS Build.

It gives these errors:

Error MSB4801: The task factory "CodeTaskFactory" is not supported on the .NET Core version of MSBuild Error MSB4175: The task factory "CodeTaskFactory" could not be loaded from the assembly "C:\Program Files\dotnet\sdk\6.0.101\Microsoft.Build.Tasks.Core.dll". The task factory must return a value for the "TaskType" property 

I looked at some other options, which all failed as they lacked one or another thing. So finally I ask here, what are my options to run a UsingTask with an output on the MS Build server?

My code

 <UsingTask TaskName="mytask" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll"> <ParameterGroup> <AssemblyVersion ParameterType="System.String" Output="true" /> </ParameterGroup> <Task> <Code Type="Fragment" Language="cs"> <![CDATA[ Log.LogMessage(MessageImportance.High, "we are here"); AssemblyVersion = "1.2.3.4"; ]]> </Code> </Task> </UsingTask> 

1 Answer 1

23

The error message is correct. Your UsingTask is trying to use .Net Framework which is not available. Update the UsingTask to use the RoslynCodeTaskFactory in place of the CodeTaskFactory.

e.g.:

<UsingTask TaskName="mytask" TaskFactory="RoslynCodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.Core.dll" > 

See MSBuild inline tasks which states (with emphasis added by me):

In MSBuild 15.8, the RoslynCodeTaskFactory was added which can create .NET Standard cross-platform inline tasks. If you need to use inline tasks on .NET Core, you must use the RoslynCodeTaskFactory.

See also MSBuild inline tasks with RoslynCodeTaskFactory.

Sign up to request clarification or add additional context in comments.

1 Comment

@johnathan I AM using RoslynCodeTaskFactory, yet I continue to get the same error. I posted as a separate question here: stackoverflow.com/questions/79258567/…

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.