KB 0036
During build, receive error MSB6002 or MSB6003 at license compiler step.


CATEGORY

ASComm IoT

 

SYMPTOMS

Whan building .NET Core application, you may receive one of the following error messages

Error MSB6002 The command-line for the "LC" task is too long. Command-lines longer than 32000 characters are likely to fail.

-or-

Error MSB6003 The specified task executable "lc.exe" could not be run. System.ComponentModel.Win32Exception (0x80004005): The filename or extension is too long

 

CAUSE

This is caused by a License Compiler issue and is documented on the following github page

https://github.com/Microsoft/msbuild/issues/2836

 

SOLUTION

1. Create a backup for your project file (C# project file is *.csproj, VB project file is *.vbproj).

2. Open your project file using Visual Studio Code or any text editor.

3. Add the following code to your project between <Project> and </Project> tags

<Target Name="WorkaroundMSBuild2836" BeforeTargets="CompileLicxFiles">
  <!-- Work around https://github.com/Microsoft/msbuild/issues/2836 by
           temporarily setting TargetFrameworkVersion to a version high 
           enough to cause the LC task to use a response file. -->
  <PropertyGroup>
    <_OriginalTargetFrameworkVersion>$(TargetFrameworkVersion)</_OriginalTargetFrameworkVersion>
    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
  </PropertyGroup>
</Target>
<Target Name="UndoWorkaroundMSBuild2836" AfterTargets="CompileLicxFiles">
  <PropertyGroup>
    <TargetFrameworkVersion>$(_OriginalTargetFrameworkVersion)</TargetFrameworkVersion>
  </PropertyGroup>
</Target>

 

We added after the following entry and have verified success

<ItemGroup>
  <EmbeddedResource Include="licenses.licx" />
</ItemGroup>