[visual-studio] dotnet core / csproj의 AssemblyInfo와 동일

닷넷 코어가 .csproj형식 으로 다시 이동했기 때문에 다른 것들을 MyProject.AssemblyInfo.cs포함 하는 새로운 자동 생성 이 있습니다.

[assembly: AssemblyCompany("MyProject")]
[assembly: AssemblyVersion("1.0.0.0")]

참고 이 자동으로 모든 빌드를 다시 생성된다. 이전에는 파일이 / obj / 디렉토리에서 발견되었으므로 디스크에서 파일을 찾을 수없고 오류 메시지를 클릭해도 파일이 열리지 않으므로 메모리에만있는 것으로 나타납니다.

이것은 오류 메시지입니다.
여기에 이미지 설명을 입력하십시오

그것들이 거기에 정의되어 있기 때문에 고전에서 직접 정의 할 수 없습니다 AssemblyInfo.cs.

프로젝트의 회사 및 버전을 어디서 / 어떻게 정의 할 수 있습니까?



답변

이미 알고 있듯이 .csproj에서 대부분의 설정을 제어 할 수 있습니다.

AssemblyInfo.cs에 이러한 속성을 유지하려면 자동 생성 된 어셈블리 속성을 해제 할 수 있습니다.

<PropertyGroup>
   <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
</PropertyGroup> 

어떤 일이 벌어지고 있는지 보려면 Microsoft.NET.Sdk 에서 Microsoft.NET.GenerateAssemblyInfo.targets를 확인하십시오.


답변

해당 설정이 .csproj 파일로 이동되었습니다.

기본적으로 이들은 표시되지 않지만 프로젝트 속성 Package탭 의 Visual Studio 2017에서 찾을 수 있습니다 .

프로젝트 속성, 탭 패키지

일단 저장되면 해당 값을 찾을 수 있습니다 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.

또한 dotnet packVisual Studio 2017에서 UI를 사용 하거나 UI를 통해 패키지를 만들 때 너겟 패키지에도 적용됩니다 .

https://docs.microsoft.com/en-us/visualstudio/msbuild/customize-your-build를 참조 하십시오.


답변

당신은 항상 당신의 자신의 추가 할 수 있는 AssemblyInfo.cs 편리를위한에서 온다 InternalsVisibleToAttribute, CLSCompliantAttribute자동으로 생성되지 않으며 다른 사람을.

프로젝트에 AssemblyInfo.cs 추가

  1. 솔루션 탐색기에서을 마우스 오른쪽 버튼으로 클릭하십시오 <project name> > Add > New Folder.

새 폴더 추가

  1. 폴더 이름을 “속성”으로 지정하십시오.

이름 폴더 속성

  1. 오른쪽 “속성”폴더를 클릭하고 확인을 클릭합니다 Add > New Item....

새 항목 추가

  1. “클래스”를 선택하고 이름을 “AssemblyInfo.cs”로 지정하십시오.

이름 파일 AssemblyInfo.cs

자동 생성 된 속성 억제

속성을 자동 생성하지 않고 AssemblyInfo.cs로 다시 이동 하려면 natemcmaster가 그의 답변 에서 지적한 것처럼 MSBuild에서 해당 속성을 억제 할 수 있습니다 .


답변

NightOwl888의 답변에 추가하여 한 단계 더 나아가 AssemblyInfo일반 클래스가 아닌 클래스를 추가 할 수 있습니다 .

여기에 이미지 설명을 입력하십시오


답변

이 주제 / 답변을 다음과 같이 확장하고 싶습니다. 누군가 언급했듯이이 자동 생성 AssemblyInfo 는 외부 도구에 장애가 될 수 있습니다. 필자의 경우 FinalBuilder 사용 하면 빌드 작업으로 AssemblyInfo 가 업데이트되지 않는 문제가 발생했습니다 . 분명히 FinalBuilder~proj파일을 사용하여 AssemblyInfo의 위치를 찾습니다 . 나는 그것이 프로젝트 폴더의 어느 곳에서나보고 있다고 생각했다. 아뇨.

<PropertyGroup>
   <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
</PropertyGroup> 

VS IDE / MS 빌드로 빌드 한 경우 절반의 작업 만 수행하면 사용자 정의 어셈블리 정보가 허용됩니다. 그러나 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>

이제이 항목이 있으면 FinalBuilderAssemblyInfo의 위치를 찾고 파일을 수정합니다. action을 None사용하면 MSBuild / DevEnv가이 항목을 무시하고 더 이상 파일의 Compile어셈블리 정보 항목과 함께 제공 되는 동작을 기반으로 더 이상 오류를보고하지 않습니다 proj.

C : \ Program Files \ dotnet \ sdk \ 2.0.2 \ Sdks \ Microsoft.NET.Sdk \ build \ Microsoft.NET.Sdk.DefaultItems.targets (263,5) : 오류 : 중복 ‘컴파일’항목이 포함되었습니다. .NET SDK에는 기본적으로 프로젝트 디렉토리의 ‘컴파일’항목이 포함되어 있습니다. 프로젝트 파일에서 이러한 항목을 제거하거나 프로젝트 파일에 명시 적으로 포함 시키려면 ‘EnableDefaultCompileItems’속성을 ‘false’로 설정할 수 있습니다. 자세한 내용은 https://aka.ms/sdkimplicititems를 참조 하십시오 . 중복 항목은 ‘AssemblyInfo.cs’입니다.


답변