Эквивалент AssemblyInfo в ядре dotnet / csproj
поскольку ядро dotnet вернулось к .csproj
формат есть новый автогенерированный MyProject.AssemblyInfo.cs
, которые содержат среди прочих.
[assembly: AssemblyCompany("MyProject")]
[assembly: AssemblyVersion("1.0.0.0")]
Примечание что это автоматически восстанавливается каждую сборку. Ранее файл был найден в каталоге/ obj/, теперь он находится только в памяти, так как файл не может быть найден на диске, и при нажатии на сообщение об ошибке не открывается ни один файл.
С тех пор они определены там я не могу определить их сам в классическом AssemblyInfo.cs
.
где / как я могу определить компанию и версию проекта?
5 ответов:
Как вы уже заметили, вы можете управлять большинством этих настроек .csproj.
Если вы предпочитаете хранить их в AssemblyInfo.cs, вы можете отключить автоматически сгенерированные атрибуты сборки.
<PropertyGroup> <GenerateAssemblyInfo>false</GenerateAssemblyInfo> </PropertyGroup>
Если вы хотите увидеть, что происходит под капотом, в кассу Майкрософт.Чистая.GenerateAssemblyInfo.цели внутри Microsoft.Чистая.СДК.
эти настройки переместились в .файл csproj.
по умолчанию они не отображаются, но вы можете обнаружить их из Visual Studio 2017 в свойствах проекта
Package
tab.после сохранения эти значения можно найти в
MyProject.csproj
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net461</TargetFramework> <Version>1.2.3.4</Version> <Authors>Author 1</Authors> <Company>Company XYZ</Company> <Product>Product 2</Product> <PackageId>MyApp</PackageId> <AssemblyVersion>2.0.0.0</AssemblyVersion> <FileVersion>3.0.0.0</FileVersion> <NeutralLanguage>en</NeutralLanguage> <Description>Description here</Description> <Copyright>Copyright</Copyright> <PackageLicenseUrl>License URL</PackageLicenseUrl> <PackageProjectUrl>Project URL</PackageProjectUrl> <PackageIconUrl>Icon URL</PackageIconUrl> <RepositoryUrl>Repo URL</RepositoryUrl> <RepositoryType>Repo type</RepositoryType> <PackageTags>Tags</PackageTags> <PackageReleaseNotes>Release</PackageReleaseNotes> </PropertyGroup>
на вкладке информация о свойствах проводника
FileVersion
отображается как "версия файла" иVersion
отображается как "версия продукта"
Я делаю следующее Для моих проектов .NET Standard 2.0.
создать
Directory.Build.props
файл (например, в корне вашего РЕПО) и переместите свойства для совместного использования из.csproj
файл в этот файл.MSBuild будет забрать его автоматически и применить их к автогенерируемые
AssemblyInfo.cs
.они также применяются к пакету nuget при создании одного с
dotnet pack
или через пользовательский интерфейс в Visual Studio в 2017.посмотреть https://docs.microsoft.com/en-us/visualstudio/msbuild/customize-your-build
вы всегда можете добавить свои собственные AssemblyInfo.cs, что очень удобно для
InternalsVisibleToAttribute
,CLSCompliantAttribute
и другие, которые не генерируются автоматически.Добавление AssemblyInfo.cs к проекту
- в обозревателе решений щелкните правой кнопкой мыши на
<project name> > Add > New Folder
.
- назовите папку "свойства".
- право нажмите на папку "свойства" и нажмите
Add > New Item...
.
- выберите " класс "и назовите его" AssemblyInfo.цезий."
Подавление Автоматически Генерируемых Атрибутов
если вы хотите переместить атрибуты обратно в AssemblyInfo.cs вместо того, чтобы автоматически генерировать их, вы можете подавить их в MSBuild, как указал natemcmaster в ответ.
Я хочу расширить эту тему/ответы со следующим. Как кто-то упомянул, это автоматически генерируется AssemblyInfo может быть препятствием для внешних инструментов. В моем случае, используя FinalBuilder, у меня была проблема, что AssemblyInfo не обновлялся действием сборки. Видимо,FinalBuilder использует
~proj
файл для поиска местоположения AssemblyInfo. Я подумал, что он искал где-нибудь в папке проекта. Нет. Итак, меняем это<PropertyGroup> <GenerateAssemblyInfo>false</GenerateAssemblyInfo> </PropertyGroup>
было только задание, оно позволяло пользовательскую информацию о сборке, если она была построена VS IDE / MS Build. Но мне нужно было FinalBuilder сделайте это тоже без ручных манипуляций с файлом информации о сборке. Мне нужно было удовлетворить все программы, MSBuild / VS и FinalBuilder.
я решил это, добавив запись в существующий
ItemGroup
<ItemGroup> <Compile Remove="Common\**" /> <Content Remove="Common\**" /> <EmbeddedResource Remove="Common\**" /> <None Remove="Common\**" /> <!-- new added item --> <None Include="Properties\AssemblyInfo.cs" /> </ItemGroup>
теперь, имея этот пункт, FinalBuilder находит местоположение AssemblyInfo и изменяет файл. Пока действие
None
позволяет MSBuild / DevEnv игнорировать эту запись и больше не сообщать об ошибке на основеCompile
действие, которое обычно поставляется с записью информации о сборке вproj
файлы.C:\Program файлы\dotnet ограничителя\СДК\2.0.2\пакеты SDK\Майкрософт.Чистая.\SDK построения\от Microsoft.Чистая.СДК.DefaultItems.целевые показатели(263,5): ошибка: были включены повторяющиеся элементы "компиляции". .NET SDK включает в себя элементы "компиляции" из каталога проекта с помощью по умолчанию. Вы можете либо удалить эти элементы из файла проекта, либо установить для свойства 'EnableDefaultCompileItems' значение 'false', если вы хотите явно включить их в файл проекта. Для получения дополнительной информации см. раздел https://aka.ms/sdkimplicititems. Повторяющиеся элементы были: 'отличается.cs'