Drizin / CodegenCS

C# Toolkit for Code Generation (T4 alternative!)
MIT License
223 stars 30 forks source link

Use System.XML in template fails #30

Closed uholeschak closed 3 weeks ago

uholeschak commented 3 weeks ago

When trying to use a reference to System.Xml I get the following error during template generation:

  CS1069: Line 29 Der Typname "XmlDocument" konnte nicht im Namespace "System.Xml" gefunden werden. Dieser Typ wurde an Assembly "System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" weitergeleitet. Sie sollten einen Verweis auf die Assembly hinzufügen.
  CS1069: Line 29 Der Typname "XmlDocument" konnte nicht im Namespace "System.Xml" gefunden werden. Dieser Typ wurde an Assembly "System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" weitergeleitet. Sie sollten einen Verweis auf die Assembly hinzufügen.
  CS1069: Line 31 Der Typname "XmlNode" konnte nicht im Namespace "System.Xml" gefunden werden. Dieser Typ wurde an Assembly "System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" weitergeleitet. Sie sollten einen Verweis auf die Assembly hinzufügen.
  CS1069: Line 34 Der Typname "XmlAttribute" konnte nicht im Namespace "System.Xml" gefunden werden. Dieser Typ wurde an Assembly "System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" weitergeleitet. Sie sollten einen Verweis auf die Assembly hinzufügen.
  CS1069: Line 40 Der Typname "XmlAttribute" konnte nicht im Namespace "System.Xml" gefunden werden. Dieser Typ wurde an Assembly "System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" weitergeleitet. Sie sollten einen Verweis auf die Assembly hinzufügen.

This is included in the code:

using System.IO;
using System.Xml;
using System;
...
                XmlDocument doc = new XmlDocument();
                doc.Load(fileName);
                XmlNode nodeCtor = doc.SelectSingleNode("/patch_info/ctor");
...
uholeschak commented 3 weeks ago

To fix this, I have converted the code to read a JSON file now, this way XmlDocument is not required any more.

Drizin commented 3 weeks ago

Same problem as https://github.com/Drizin/CodegenCS/issues/23 - check that thread where I've just recapped the problem and explained what we need to do.

Drizin commented 1 week ago

I've just republished new dotnet-codegencs 3.5.0 and VSExtension 3.7.2. CLI now has the option to specify -r:assembly.dll, and both CLI/VSExtension allow the use of #r "assembly.dll" in the templates. Please check changes new unit tests and/or documentation updates. Looks like it's working fine for framework assemblies, but probably need some runtime adjustments to make it work with third-party assemblies. Let me know how it goes.

uholeschak commented 1 week ago

Thanks, I have added #r "System.Xml.dll" and was able to use XmlDocument now!