닷넷 코어가 .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 pack
Visual Studio 2017에서 UI를 사용 하거나 UI를 통해 패키지를 만들 때 너겟 패키지에도 적용됩니다 .
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.cs”로 지정하십시오.
자동 생성 된 속성 억제
속성을 자동 생성하지 않고 AssemblyInfo.cs로 다시 이동 하려면 natemcmaster가 그의 답변 에서 지적한 것처럼 MSBuild에서 해당 속성을 억제 할 수 있습니다 .
답변
답변
이 주제 / 답변을 다음과 같이 확장하고 싶습니다. 누군가 언급했듯이이 자동 생성 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>
이제이 항목이 있으면 FinalBuilder 가 AssemblyInfo의 위치를 찾고 파일을 수정합니다. 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’입니다.