2017-12-01 20 views
0

내 솔루션에는 Excel 추가 기능인 클래스 라이브러리가 있습니다. 솔루션이나 프로젝트를 빌드 할 때이 프로젝트는 먼저 xxx.dll이라는 파일을 출력하고 x64를 대상으로 xxx_x64.dll이라는 파일을 출력하여 x86을 대상으로 구축해야합니다.x86 및 x64 플랫폼 모두에 대한 프로젝트 대상 빌드

어떻게해야합니까? 또는 어떻게 csproj 파일을 편집 할 수 있습니까? 감사.

+0

잘못된 문제를 해결하려고합니다. C# 컴파일러는 MSIL을 생성하며 모든 아키텍처에서 실행됩니다. DLL을 배포하려면 Regasm.exe에 등록해야 Excel에서 다시 찾을 수 있습니다.32 비트와 64 비트의 두 가지 버전이 있습니다. 사용자가 설치 한 Office의 특성에 대해 잘 모르는 경우 두 버전을 모두 실행하십시오. 동일한 DLL 사용. –

+0

@WPInfo,이 호에 대한 모든 업데이트가 있습니까? 문제를 해결 했습니까? 그렇지 않은 경우이 문제에 대한 최신 정보를 알려주십시오. –

답변

0

마지막으로 Visual Studio에서 공유 프로젝트를 사용하여이 문제를 해결했습니다. 내가 원하는 것은 두 개의 Excel Addin 어셈블리가 x86 플랫폼 또는 AnyCPU을 타겟팅하고 다른 하나는 x64 플랫폼을 타겟팅하는 솔루션을 빌드하여 생성됩니다. 여기

내 프로젝트 스냅 샷입니다 :

enter image description here

모든 코드 파일 (* CS.) 및 공유 프로젝트로 이동 자원 (이미지 또는 XML 파일)을 모두 다른 두 프로젝트가를 그것에 대한 참조.

다른 2 개의 프로젝트와 마찬가지로, 그들 사이에 몇 가지 차이점이 있습니다. 어셈블리 이름 및 대상 플랫폼. 하나는 XXX.dll이고 타겟팅은 AnyCPU이고 다른 하나는 XXX_64.dll이고 타겟팅은 x64입니다.

솔루션을 빌드 할 때 2 개의 프로젝트 각각이 해당 어셈블리를 발행합니다.

0

어떻게해야합니까? 또는 어떻게 csproj 파일을 편집 할 수 있습니까? 당신이 플랫폼이라는 기본 출력 어셈블리를 변경하려는 경우

조립 xxx.dll의 이름은 당신이, 프로젝트 파일에서 속성 AssemblyName에 의해 간단한 변경에 코드를 다음이 부동산의 가치를 수 정의 프로젝트 파일 .csproj는 :

<AssemblyName>TestWithDllWithPlatform_$(Platform)</AssemblyName> 

그러나이 설정

, 당신은 당신이 86 타겟팅 할 때 xxx_x86.dll라는 이름의 출력 어셈블리를 얻을 것이다.

여전히 오히려 xxx_x86.dll보다 xxx.dll라는 이름의 파일을하고 출력하기로 86 타겟팅하려는 경우, 당신은 당신이 x64 타겟팅 빌드 후 이벤트에 DLL 파일의 이름을 변경 시도 할 수 있습니다 :이 경우

if $(Platform) == x64 (copy /y "$(TargetPath)" "$(ProjectDir)$(OutDir)$(TargetName)_$(Platform).dll") 

을 당신이 x64을 대상으로 할 때, 조립 xxx_x64.dll 것이라는하고 출력하기 :

enter image description here

게다가, Y 경우 이 도움이

if $(Platform) == x64 (del "$(TargetPath)") 

희망을 : ou는 당신이 빌드 후 아래 명령으로 삭제할 수 있습니다, 원래 xxx_.dll 보관하지 않습니다.