Search code examples
c#.netserialization.net-standardsgen

sgen/microsoft.xmlserializer.generator fails to generate


I've created a new .NET Standard 2.0 project and added the following class:

using System;
using System.Xml.Serialization;

namespace MyFunnyLib
{
    [Serializable]
    public class Foo
    {
        [XmlElement] 
        public string Bar { get; set; }
    }
}

My .csproj file looks like this:

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <TargetFramework>netstandard2.0</TargetFramework>
        <GenerateSerializationAssemblies>On</GenerateSerializationAssemblies>
    </PropertyGroup>
    <ItemGroup>
        <PackageReference Include="Newtonsoft.Json" Version="9.0.1" />
        <PackageReference Include="Microsoft.XmlSerializer.Generator" Version="8.0.0" />
    </ItemGroup>
    <ItemGroup>
        <DotNetCliToolReference Include="Microsoft.XmlSerializer.Generator" Version="8.0.0"/>
    </ItemGroup>
</Project>

When I compile the project, I get the following output:

Build started at 16:15...
1>------ Build started: Project: MyFunnyLib, Configuration: Debug Any CPU ------
1>MyFunnyLib -> C:\Users\MyUserName\source\repos\MyFunnyLib\MyFunnyLib\bin\Debug\netstandard2.0\MyFunnyLib.dll
1>.NET Xml Serialization Generation Utility, Version 8.0.0]
1>Serialization Code File Name: C:\Users\MyUserName\source\repos\MyFunnyLib\MyFunnyLib\obj\Debug\netstandard2.0\MyFunnyLib.XmlSerializers.cs.
1>Generated serialization code for assembly C:\Users\MyUserName\source\repos\MyFunnyLib\MyFunnyLib\obj\Debug\netstandard2.0\MyFunnyLib.dll --> 'C:\Users\MyUserName\source\repos\MyFunnyLib\MyFunnyLib\obj\Debug\netstandard2.0\MyFunnyLib.XmlSerializers.cs'.
1>obj\Debug\netstandard2.0\MyFunnyLib.XmlSerializers.cs(122,20): warning CS0234: The type or namespace name 'Span<>' does not exist in the namespace 'System' (are you missing an assembly reference?)
1>obj\Debug\netstandard2.0\MyFunnyLib.XmlSerializers.cs(122,44): warning CS0518: Predefined type 'System.Span`1' is not defined or imported
1>obj\Debug\netstandard2.0\MyFunnyLib.XmlSerializers.cs(171,20): warning CS0234: The type or namespace name 'Span<>' does not exist in the namespace 'System' (are you missing an assembly reference?)
1>obj\Debug\netstandard2.0\MyFunnyLib.XmlSerializers.cs(171,44): warning CS0518: Predefined type 'System.Span`1' is not defined or imported
1>C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\microsoft.xmlserializer.generator\8.0.0\build\Microsoft.XmlSerializer.Generator.targets(55,5): warning : SGEN: Failed to generate the serializer for MyFunnyLib.dll. Please follow the instructions at https://go.microsoft.com/fwlink/?linkid=858594 and try again.
1>.NET Xml Serialization Generation Utility, Version 8.0.0]
1>EXEC : warning : Ignoring invalid command line argument: 'obj\Debug\netstandard2.0"'..
1>The path is empty. (Parameter 'path')
1>C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\microsoft.xmlserializer.generator\8.0.0\build\Microsoft.XmlSerializer.Generator.targets(85,5): warning MSB3073: The command "dotnet Microsoft.XmlSerializer.Generator --force --quiet --reference "C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\microsoft.xmlserializer.generator\8.0.0\lib\netstandard2.0\dotnet-Microsoft.XmlSerializer.Generator.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\microsoft.csharp\4.0.1\ref\netstandard1.0\Microsoft.CSharp.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\Microsoft.Win32.Primitives.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\mscorlib.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\netstandard.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\newtonsoft.json\9.0.1\lib\netstandard1.0\Newtonsoft.Json.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.AppContext.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Collections.Concurrent.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Collections.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Collections.NonGeneric.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Collections.Specialized.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.ComponentModel.Composition.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.ComponentModel.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.ComponentModel.EventBasedAsync.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.ComponentModel.Primitives.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.ComponentModel.TypeConverter.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Console.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Core.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Data.Common.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Data.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Diagnostics.Contracts.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Diagnostics.Debug.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Diagnostics.FileVersionInfo.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Diagnostics.Process.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Diagnostics.StackTrace.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Diagnostics.TextWriterTraceListener.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Diagnostics.Tools.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Diagnostics.TraceSource.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Diagnostics.Tracing.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Drawing.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Drawing.Primitives.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Dynamic.Runtime.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Globalization.Calendars.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Globalization.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Globalization.Extensions.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.IO.Compression.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.IO.Compression.FileSystem.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.IO.Compression.ZipFile.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.IO.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.IO.FileSystem.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.IO.FileSystem.DriveInfo.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.IO.FileSystem.Primitives.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.IO.FileSystem.Watcher.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.IO.IsolatedStorage.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.IO.MemoryMappedFiles.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.IO.Pipes.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.IO.UnmanagedMemoryStream.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Linq.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Linq.Expressions.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Linq.Parallel.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Linq.Queryable.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Net.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Net.Http.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Net.NameResolution.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Net.NetworkInformation.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Net.Ping.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Net.Primitives.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Net.Requests.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Net.Security.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Net.Sockets.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Net.WebHeaderCollection.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Net.WebSockets.Client.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Net.WebSockets.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Numerics.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.ObjectModel.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Reflection.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Reflection.Extensions.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Reflection.Primitives.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Resources.Reader.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Resources.ResourceManager.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Resources.Writer.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Runtime.CompilerServices.VisualC.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Runtime.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Runtime.Extensions.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Runtime.Handles.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Runtime.InteropServices.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Runtime.InteropServices.RuntimeInformation.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Runtime.Numerics.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Runtime.Serialization.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Runtime.Serialization.Formatters.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Runtime.Serialization.Json.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Runtime.Serialization.Primitives.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Runtime.Serialization.Xml.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Security.Claims.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Security.Cryptography.Algorithms.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Security.Cryptography.Csp.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Security.Cryptography.Encoding.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Security.Cryptography.Primitives.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Security.Cryptography.X509Certificates.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Security.Principal.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Security.SecureString.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.ServiceModel.Web.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Text.Encoding.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Text.Encoding.Extensions.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Text.RegularExpressions.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Threading.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Threading.Overlapped.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Threading.Tasks.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Threading.Tasks.Parallel.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Threading.Thread.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Threading.ThreadPool.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Threading.Timer.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Transactions.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.ValueTuple.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Web.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Windows.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Xml.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Xml.Linq.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Xml.ReaderWriter.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Xml.Serialization.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Xml.XDocument.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Xml.XmlDocument.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Xml.XmlSerializer.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Xml.XPath.dll;C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\System.Xml.XPath.XDocument.dll" --assembly "" --type  --out "obj\Debug\netstandard2.0\"" exited with code 1.
1>C:\Users\MyUserName\source\repos\MyFunnyLib\EXT\packages\microsoft.xmlserializer.generator\8.0.0\build\Microsoft.XmlSerializer.Generator.targets(86,5): warning : SGEN: Fail to generate obj\Debug\netstandard2.0\MyFunnyLib.XmlSerializers.dll.XmlSerializers'. Please follow the instructions at https://go.microsoft.com/fwlink/?linkid=858594 and try again.
1>Done building project "MyFunnyLib.csproj".
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
========== Build completed at 16:15 and took 05,700 seconds ==========

I guess the problem is something with the call of the sgen with:

dotnet Microsoft.XmlSerializer.Generator --force --quiet --reference ...

At the ... above all files from the nuget-ext-directory are included. I only want the types serialized of my own assembly and not all others.

What am I doing wrong here?

I've already tried adding the following lines in the csproj like the docu said:

<PropertyGroup> 
   <SGenReferences>C:\Users\MyUserName\source\repos\MyFunnyLib\MyFunnyLib\bin\Debug\netstandard2.0\MyFunnyLib.dll</SGenReferences>
    <SGenTypes>MyFunnyLib.Foo</SGenTypes>
    <SGenProxyTypes>false</SGenProxyTypes>
    <SGenVerbose>true</SGenVerbose>
</PropertyGroup>

I've tried the solution from @dbc, at it looked good in the first but I got a lot of runtime-exceptions while trying to serializer. So I build a small exampleproject where the problem can be reproduced.

ExampleSolution

Core.Types and Core.Validation are both .netStandard-Projects. The remaining projects are .net Framework.

  • Core.Validation has a reference to Core.Types
  • CommonInterface.Data has refrences to Core.Validation and Core.Types
  • CommonInterface.Transfer has references to CommonInterface.Data and Core.Types

I want to generate the XmlSerializer.Dll fro the CommonInterface.Transfer-Assembly. I've tried the solution below with the following lines in the csproj:

  <ItemGroup>
    <PackageReference Include="Microsoft.XmlSerializer.Generator" Version="8.0.0" />
    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
    <PackageReference Include="System.Memory" Version="4.5.4" Condition="'$(TargetFramework)'=='netstandard2.0'" />
    <PackageReference Include="System.Memory" Version="4.5.4" Condition="'$(TargetFramework)'=='netstandard2.1'" />
  </ItemGroup>
  <ItemGroup>
      <DotNetCliToolReference Include="Microsoft.XmlSerializer.Generator" Version="8.0.0" />
  </ItemGroup>

When building I get the output:

4>  CommonInterface.Transfer -> C:\Users\User1\repos\WpfApp3\bin\MyApp\CommonInterface.Transfer.dll
4>  Version for package `Microsoft.XmlSerializer.Generator` could not be resolved.
4>C:\Users\User1\.nuget\packages\microsoft.xmlserializer.generator\8.0.0\build\Microsoft.XmlSerializer.Generator.targets(51,5): warning MSB3073: The command "dotnet Microsoft.XmlSerializer.Generator "obj\Debug\CommonInterface.Transfer.dll" --force --quiet obj\Debug\sgen.rsp" exited with code 1.
4>C:\Users\User1\.nuget\packages\microsoft.xmlserializer.generator\8.0.0\build\Microsoft.XmlSerializer.Generator.targets(52,5): warning : SGEN: Failed to generate the serializer for CommonInterface.Transfer.dll. Please follow the instructions at https://go.microsoft.com/fwlink/?linkid=858594 and try again.

Solution

  • When building sgen XmlSerializer assemblies against netstandard2.0 and netstandard2.1, in addition to following the instructions from Use Microsoft XML Serializer Generator on .NET Core, you must add a reference to System.Memory, which provides access to Span<T>.

    Using this answer by Marc Gravell to Span usage in netstandard 2.1 without dependencies, I modified your .csproj to conditionally add <PackageReference Include="System.Memory" ... />

    <Project Sdk="Microsoft.NET.Sdk">
      <PropertyGroup>
        <TargetFramework>netstandard2.0</TargetFramework>
    <!--
        I had to comment this out when building with .NET 8.  If I left it in I got an error:
        error MSB3474: The task "SGen" is not supported on the .NET Core version of MSBuild.
        <GenerateSerializationAssemblies>On</GenerateSerializationAssemblies>
    -->
      </PropertyGroup>
      <ItemGroup>
        <PackageReference Include="Microsoft.XmlSerializer.Generator" Version="8.0.0" />
        <PackageReference Include="System.Memory" Version="4.5.4" Condition="'$(TargetFramework)'=='netstandard2.0'"/>
        <PackageReference Include="System.Memory" Version="4.5.4" Condition="'$(TargetFramework)'=='netstandard2.1'"/>
      </ItemGroup>
      <ItemGroup>
        <DotNetCliToolReference Include="Microsoft.XmlSerializer.Generator" Version="8.0.0" />
      </ItemGroup>
    </Project>
    

    And I was able to build successfully against netstandard2.0 and netstandard2.1 using dotnet build with dotnet version 8.0.203.

    Notes:

    • the dotnet 8 version of dotnet build generated an error for the <GenerateSerializationAssemblies> property:

      error MSB3474: The task "SGen" is not supported on the .NET Core version of MSBuild.

      So I had to comment that out.

    • Why is Span<T> required? The generated code can be found in obj\Debug\netstandard2.0\MyFunnyLib.XmlSerializers.cs. If you edit the code, you will see a line:

      System.Span<bool> paramsRead = stackalloc bool[1];
      

      That introduces the dependency.