Комментарии Xml Doc во встроенных ресурсах C# в .NET (Core)

У меня есть проект С#, перенесенный из .NET Framework в .NET Core (а затем в .NET 5).

Мы вообще не трогали наши файлы .resx в течение нескольких лет, но теперь, когда я обновил файл .resx, файлы Resources.Designer.cs были сгенерированы повторно (хорошо), удалив все ранее включенные Xml Doc (плохо, создает большие различия , а также потеря информации).

Как указать шагу сборки Resx сохранять/генерировать XML-документ, как в старые времена?

Изначально этот код был написан и сгенерирован с помощью Visual Studio для Windows, а теперь мы используем Rider для Mac.

РЕДАКТИРОВАТЬ: похоже, что это не относится к .NET 5, а скорее к паре Windows + VS против Mac + Rider, поскольку разработчик Windows в моей команде регенерировал эти комментарии поверх моих изменений.

Как мне получить это на Mac/Linux без Visual Studio?

Старая часть файла:

//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:4.0.30319.42000
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

namespace Resources {
    using System;
    
    
    /// <summary>
    ///   A strongly-typed resource class, for looking up localized strings, etc.
    /// </summary>
    // This class was auto-generated by the StronglyTypedResourceBuilder
    // class via a tool like ResGen or Visual Studio.
    // To add or remove a member, edit your .ResX file then rerun ResGen
    // with the /str option, or rebuild your VS project.
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    public class Resources {

...

        /// <summary>
        ///   Looks up a localized string similar to About.
        /// </summary>
        public static string About {
            get {
                return ResourceManager.GetString("About", resourceCulture);
            }
        }

НОВАЯ часть файла:

//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

namespace Resources {
    using System;
    
    
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
    [System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    public class Resources {

...

        public static string About {
            get {
                return ResourceManager.GetString("About", resourceCulture);
            }
        }

Размер рассматриваемого файла уменьшается с 12k LOC до 8k LOC, что приводит к потере большого количества комментариев и затрудняет работу с ним.


person Iarek    schedule 21.06.2021    source источник
comment
@HansPassant Я думаю, что ОП означает, что автоматически сгенерированные комментарии были потеряны, а не то, что изначально они были сделаны вручную.   -  person Camilo Terevinto    schedule 21.06.2021
comment
@HansPassant Меня беспокоят только комментарии, которые раньше генерировались автоматически, а теперь нет. Могу ли я что-то изменить в вопросе, чтобы сделать его более очевидным?   -  person Iarek    schedule 21.06.2021


Ответы (1)


Я не знаю, сработает ли это для вас как решение, но я предлагаю, чтобы при возникновении проблемы с ОС/инструментами запускайте Docker и вручную выполняйте команду MSBUILD из образа Windows Docker. Я предлагаю это, так как ваш коллега WinDev восстанавливает отсутствующие комментарии.

Команды MSBUILD

Единственная ошибка, которая не сработает, похожа на ссылку ниже, где им все еще нужно указать тип конфигурации и что проект (файл .CSPROJ) был настроен на сборку документации по этой конфигурации. Генерация документов зависит от сборки и конфигурации Visual Studio.

Например, если Документы были собраны, когда сборка проекта была инициирована с отладкой и любым процессором, установленным в качестве конфигурации, то это то же самое, что вам нужно вызвать в интерфейсе командной строки MSBUILD с необходимыми параметрами, такими как

Это выглядело бы примерно так (исходя из отрывочной памяти).

msbuild.exe MyProject.csproj `
/p:Configuration=Debug `
/p:Platform="Any CPU" `
/p:GenerateDocumentation `
/p:DocumentationFile="MyProject.xml"

Stackoverflow — XML-документы MSBUILD

Все это можно заскриптовать, так что это в значительной степени запускает образ Docker, POSH-скрипт создает документ сборки, а затем копирует документ на локальный хост. Немного неуклюже, но вам нужно делать это только тогда, когда вы все закончите и будете готовы поднять его.

person HouseCat    schedule 07.07.2021