Метаданные Nuspec и файл sharedassemblyinfo.cs

У меня есть многопроектное решение, написанное на С#. Я создал файл sharedassemblyinfo.cs, чтобы поделиться номером версии и т. д. между различными проектами в моем решении. Мне нужно собрать этот проект как пакет nuget. В моем файле nuspec есть заполнители, такие как $version$, которые извлекают версию сборки из файла Assemblyinfo.cs. Поскольку вместо этого я использую файл sharedassemblyinfo.cs для хранения версии сборки, могу ли я изменить свой файл nuspec, чтобы получить версию из sharedassemblyinfo.cs вместо Assemblyinfo.cs?


person Nighttrain5150    schedule 20.06.2017    source источник
comment
Вы пытались поделиться существующим файлом Assemblyinfo.cs (в виде ссылки), а не создавать новый? Если вы используете командную строку, вы можете сразу определить версию версии ovveride в .nuspec, см.   -  person George Alexandria    schedule 21.06.2017
comment
Я создаю файл sharedassemblyinfo.cs на уровне решения, и каждый проект добавляет ссылку на него в виде ссылки. Затем у каждого проекта также есть свой собственный файл Assemblyinfo.cs для конкретных вещей проекта, таких как guid, описание и т. д. Общая информация о сборке имеет версию сборки, общую для всех проектов. Я не знаком с командной строкой или тем, на что вы меня сослали. Я просто добавляю файл nuspec и создаю свой проект с помощью msbuild для создания пакета. Он выдает ошибку в версии сборки, потому что он ищет информацию о сборке, а не общую информацию о сборке.   -  person Nighttrain5150    schedule 21.06.2017
comment
Нет, AFAIK, это разработано nuget для использования атрибута AssemblyVersionAttribute в Assemblyinfo.cs, когда используется токен $version$. Если вы хотите изменить его для использования sharedassemblyinfo.cs, вам нужно отредактировать исходный код nuget, чтобы загрузить этот файл, покопавшись в исходном коде NuGet, я обнаружил, что это не так просто, как можно было бы подумать.   -  person Leo Liu-MSFT    schedule 21.06.2017
comment
Кроме того, если вы замените токен $version$ значением, то это значение будет иметь приоритет и будет использоваться в имени файла пакета. Вы также можете установить версию в командной строке, которая имеет приоритет над всем вышеперечисленным.   -  person Leo Liu-MSFT    schedule 21.06.2017
comment
Это облом. Думаю, мне просто нужно вручную установить номер версии в файле nuspec. Было просто любопытно, могу ли я как-то автоматизировать это, чтобы использовать файл sharedassemblyinfo.cs и вытащить оттуда номер версии. Ничего страшного, это просто еще один ручной шаг, который я должен помнить, когда захочу запустить новую сборку. Мне придется обновить номер версии в файле sharedassemblyinfo.cs, а затем также обновить версию в файле nuspec.   -  person Nighttrain5150    schedule 21.06.2017


Ответы (1)


Есть ли способ изменить файл nuspec, чтобы получить версию из sharedassemblyinfo.cs вместо Assemblyinfo.cs?

Нет, AFAIK, это разработано nuget для использования атрибута AssemblyVersionAttribute в Assemblyinfo.cs, когда используется токен $version$. Если вы хотите изменить его для использования sharedassemblyinfo.cs, вам нужно отредактировать исходный код nuget, чтобы загрузить файл sharedassemblyinfo.cs. После изучения исходного кода NuGet я обнаружил, что это не так просто, как можно было бы подумать. Но вы можете обсудить этот вопрос на GitHub.

Кроме того, вы можете вручную изменить номер версии в файле nuspec. если вы замените токен $version$ значением, то это значение будет иметь приоритет и будет использоваться в имени файла пакета. Вы также можете установить версию в командной строке, которая имеет приоритет над всем вышеперечисленным.

person Leo Liu-MSFT    schedule 22.06.2017