Desde que o núcleo do dotnet voltou ao .csproj
formato, há um novo gerado automaticamente MyProject.AssemblyInfo.cs
que contém entre outros.
[assembly: AssemblyCompany("MyProject")]
[assembly: AssemblyVersion("1.0.0.0")]
Observe que isso é regenerado automaticamente a cada compilação. Anteriormente, o arquivo foi encontrado no diretório / obj /, agora parece estar apenas na memória, pois o arquivo não pode ser encontrado no disco e clicar na mensagem de erro não abre nenhum arquivo.
Como eles são definidos lá, não posso defini-los eu mesmo no clássico AssemblyInfo.cs
.
Onde / como posso definir a empresa e a versão de um projeto?
Respostas:
Como você já notou, é possível controlar a maioria dessas configurações no .csproj.
Se preferir mantê-los em AssemblyInfo.cs, você pode desativar os atributos de montagem gerados automaticamente.
Se você quiser ver o que está acontecendo, confira Microsoft.NET.GenerateAssemblyInfo.targets dentro do Microsoft.NET.Sdk.
fonte
Essas configurações foram movidas para o arquivo .csproj.
Por padrão, eles não aparecem, mas você pode descobri-los no Visual Studio 2017 na
Package
guia de propriedades do projeto .Uma vez salvos, esses valores podem ser encontrados em
MyProject.csproj
Na guia de informações das propriedades do explorador de arquivos,
FileVersion
é mostrada como "Versão do arquivo" eVersion
é mostrada como "Versão do produto"fonte
Class Library (.NET Standard)
. Tens alguma ideia do porquê? Estou usando a versão 15.1, versão 26403.7, Community Edition.Eu faço o seguinte para meus projetos do .NET Standard 2.0.
Crie um
Directory.Build.props
arquivo (por exemplo, na raiz do seu repositório) e mova as propriedades a serem compartilhadas do.csproj
arquivo para esse arquivo.O MSBuild irá buscá-lo automaticamente e aplicá-los à geração automática
AssemblyInfo.cs
.Eles também são aplicados ao pacote nuget ao criar um com
dotnet pack
ou via interface do usuário no Visual Studio 2017.Consulte https://docs.microsoft.com/en-us/visualstudio/msbuild/customize-your-build
fonte
Você sempre pode adicionar seus próprios AssemblyInfo.cs , que vem em para acessível
InternalsVisibleToAttribute
,CLSCompliantAttribute
e outros que não são gerados automaticamente.Adicionando AssemblyInfo.cs a um projeto
<project name> > Add > New Folder
.Add > New Item...
.Suprimindo atributos gerados automaticamente
Se você deseja mover seus atributos de volta para AssemblyInfo.cs em vez de gerá-los automaticamente, é possível suprimi-los no MSBuild como natemcmaster apontou em sua resposta .
fonte
Adicionando à resposta do NightOwl888, você pode dar um passo adiante e adicionar uma
AssemblyInfo
classe em vez de apenas uma classe simples:fonte
Quero estender este tópico / respostas com o seguinte. Como alguém mencionado, este AssemblyInfo gerado automaticamente pode ser um obstáculo para as ferramentas externas. No meu caso, usando o FinalBuilder , tive um problema que o AssemblyInfo não estava sendo atualizado pela ação de compilação. Aparentemente, o FinalBuilder depende do
~proj
arquivo para encontrar a localização do AssemblyInfo . Eu pensei, estava procurando em qualquer lugar na pasta do projeto. Não. Então, mudar issofez apenas metade da tarefa, permitiu informações personalizadas de montagem, se construídas pelo VS IDE / MS Build. Mas eu precisava do FinalBuilder também sem manipulações manuais para o arquivo de informações de montagem. Eu precisava satisfazer todos os programas, MSBuild / VS e FinalBuilder.
Eu resolvi isso adicionando uma entrada à existente
ItemGroup
Agora, com esse item, o FinalBuilder localiza o local do AssemblyInfo e modifica o arquivo. Embora a ação
None
permita que o MSBuild / DevEnv ignore essa entrada e não reporte mais um erro com base naCompile
ação que geralmente acompanha a entrada Informações sobre a montagem nosproj
arquivos.fonte