중복 AssemblyVersion 특성
컴파일시 다음 오류를 생성하는 프로젝트가 있습니다.
오류 CS0579 : 중복 'AssemblyVersion'속성
파일을 확인한 결과 AssemblyInfo.cs
중복이없는 것 같습니다.
유사한 문제를 해결하는 MSDN에서이 기사를 찾았 으며이 기사 의 제안에 따라 문제도 해결되었습니다.
아무도 여기서 무슨 일이 일어나고 있는지 말해 줄 수 있습니까? 비슷한 이름의 클래스를 가진 프로젝트가 두 개 이상있는 경우에만 발생합니까? 아니면 다른 건가요?
이전에도이 문제가 발생 했으므로 빌드 프로세스가 버전 관리를 제공하기 위해 어셈블리 정보를 별도로 제공한다고 가정하겠습니다. 또한 프로젝트가 AssembleyInfo.cs 파일에 해당 정보를 가지고 있기 때문에 중복이 발생합니다. 따라서 파일을 제거하면 작동해야한다고 생각합니다.
Visual Studio 2017 부터 AssemblyInfo.cs
파일 을 계속 사용하는 또 다른 솔루션 은 다음과 같이 자동 어셈블리 정보 생성을 끄는 것입니다.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
</PropertyGroup>
</Project>
개인적으로 .NET Framework와 .NET Standard를 모두 지원해야하는 프로젝트에 매우 유용합니다.
나는 같은 오류가 있었고 Assembly Vesrion 및 Assembly File Version에 밑줄을 긋고 있었으므로 Luqi 답변을 읽고 방금 주석으로 추가했으며 오류가 해결되었습니다.
// AssemblyVersion is the CLR version. Change this only when making breaking changes
//[assembly: AssemblyVersion("3.1.*")]
// AssemblyFileVersion should ideally be changed with each build, and should help identify the origin of a build
//[assembly: AssemblyFileVersion("3.1.0.0")]
이전 프로젝트를 .NET Core로 변환 할 때 AssemblyInfo.cs에 있던 대부분의 정보를 이제 프로젝트 자체에서 설정할 수 있습니다. 프로젝트 속성을 열고 패키지 탭을 선택하여 새 설정을 확인합니다.
에릭 L. 앤더슨의 게시물에 '중복'System.Reflection.AssemblyCompanyAttribute '속성은' 3 옵션을 설명합니다 :
- AssemblyInfo.cs 파일에서 충돌하는 항목을 제거합니다.
- 파일을 완전히 삭제하거나
- GenerateAssemblyInfo 비활성화 ( Serge Semenov의 다른 답변 에서 제 안됨)
제 경우에는 컴파일 중에 생성 된 일부 임시 * .cs 파일이 실수로 프로젝트에 추가되었습니다.
파일은 obj\Debug
디렉토리 에서 가져 왔으므로 솔루션에 추가해서는 안됩니다. *.cs
와일드 카드는 미친 조금 가서 잘못을 추가했다.
이러한 파일을 삭제하면 문제가 해결되었습니다.
저에게는 AssembyInfo.cs와 SolutionInfo.cs의 값이 서로 다릅니다. 따라서이 파일도 확인하십시오. 그중 하나에서 버전을 제거했습니다.
어떻게 든 컨트롤러 폴더 안에 obj 폴더가 생성되어 오류가 발생했습니다. 응용 프로그램에서 Assemblyinfo.cs 내의 한 줄을 검색하면됩니다. 어딘가에 중복이있을 수 있습니다.
제 경우에는 프로젝트 폴더 자체였던 프로젝트의 하위 폴더가 있습니다.
파일 시스템:
- c : \ projects \ webapi \ wepapi.csproj
- c : \ projects \ webapi \ tests \ wepapitests.csproj
해결책
- webapi (폴더 및 프로젝트)
- 테스트 (폴더)
- 테스트 (폴더 및 프로젝트)
- webapi (폴더 및 프로젝트)
그런 다음 "webapi"프로젝트에서 하위 폴더 "tests"를 제거해야했습니다.
일반적으로 Visual Studio 2017에서 프로젝트를 컴파일 한 다음 "dotnet run"명령 줄 명령을 사용하여 .NET Core로 다시 빌드하고 실행하려고하면이 문제가 발생합니다.
"ClientApp"내부 및 프로젝트 폴더에서 직접 모든 "bin"및 "obj"폴더를 삭제하기 만하면 .NET Core 명령 "dotnet run"이 성공적으로 다시 빌드되고 실행될 수 있습니다.
msdn 에서이 답변을 찾았으며 파일을 Content로 표시 한 다음 Copy to Output = If Newer를 설명합니다. 아래 기사를 참조하십시오.
GH
AssemblyInfo.cs에서 내 버전을 업데이트하기 위해 GitVersion 도구를 추가하려고 할 때 동일한 문제가 발생했습니다. VS2017 및 .NET Core 프로젝트를 사용합니다. 그래서 저는 두 세계를 혼합했습니다. 내 AssemblyInfo.cs에는 GitVersion 도구에서 생성 된 버전 정보 만 포함되어 있으며 내 csproj에는 나머지 항목이 포함되어 있습니다. <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
버전과 관련된 속성 만 사용 하지 않습니다 (아래 참조). 자세한 내용은 AssemblyInfo 속성을 참조하세요 .
AssemblyInfo.cs
[assembly: AssemblyVersion("0.2.1.0")]
[assembly: AssemblyFileVersion("0.2.1.0")]
[assembly: AssemblyInformationalVersion("0.2.1+13.Branch.master.Sha.119c35af0f529e92e0f75a5e6d8373912d457818")]
my.csproj 에는 다른 assemblyu 속성과 관련된 모든 항목이 포함되어 있습니다.
<PropertyGroup>
...
<Company>SOME Company </Company>
<Authors>Some Authors</Authors>
<Product>SOME Product</Product>
...
<GenerateAssemblyVersionAttribute>false</GenerateAssemblyVersionAttribute>
<GenerateAssemblyFileVersionAttribute>false</GenerateAssemblyFileVersionAttribute><GenerateAssemblyInformationalVersionAttribute>false</GenerateAssemblyInformationalVersionAttribute>
내 오류는 내 프로젝트에서 "AssemblyVersion"속성 값도 포함하는 다른 파일을 참조하고 있다는 것입니다. 파일 중 하나에서 해당 속성을 제거했으며 이제 제대로 작동합니다.
The key is to make sure that this value is not declared more than once in any file in your project.
Yet another solution when upgrading core to VS2017 is to remove them in the properties\assemblyinfo.cs file.
Since they now are stored in the project.
Edit you AssemblyInfo.cs and #if !NETCOREAPP3_0 ... #endif
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
#if !NETCOREAPP3_0
[assembly: AssemblyTitle(".Net Core Testing")]
[assembly: AssemblyDescription(".Net Core")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct(".Net Core")]
[assembly: AssemblyCopyright("Copyright ©")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("000b119c-2445-4977-8604-d7a736003d34")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
#endif
참고URL : https://stackoverflow.com/questions/10311347/duplicate-assemblyversion-attribute
'Programming' 카테고리의 다른 글
Django의 urls.py에서 템플릿으로 바로 이동하려면 어떻게해야합니까? (0) | 2020.08.15 |
---|---|
선택한 실행 대상은이 작업에 유효하지 않습니다. (0) | 2020.08.15 |
CSS 레이블 너비가 적용되지 않음 (0) | 2020.08.15 |
interface {} 값의 "실제"유형을 결정하는 방법은 무엇입니까? (0) | 2020.08.15 |
v120 용 빌드 도구 (플랫폼 도구 세트 = 'v120')를 찾을 수 없습니다. (0) | 2020.08.15 |