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.
Core.Types and Core.Validation are both .netStandard-Projects. The remaining projects are .net Framework.
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.
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.