2012-12-14 3 views
7

현재 Microsoft BCL 비동기 라이브러리 (here)를 프로젝트 전체에서 사용하고 있습니다. 상호 의존적 인 어셈블리가 .NET 4 Full Profile에 대해 모두 컴파일되어 있으므로 각 프로젝트에서 어셈블리 바인딩 리디렉션을 사용하여 컴파일해야합니다. 발행 번호 2 here).app.config 파일을 C++/CLI와 함께 사용하여 VS 2012에서 어셈블리 바인딩을 구성하는 방법은 무엇입니까?

내가 지금 가지고있는 문제는 실제로 비동기 사용할 필요가 없다, 나는 C++/CLR의 DLL 프로젝트에서 이러한 라이브러리 중 하나 소비한다는 것이다 그러나 나는 다음과 같은 컴파일 오류가 있습니다

2> C : \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets (1578,5) : 경고 MSB3268 : 주 참조 "ImInterface.dll"이 프레임 워크 어셈블리 "System에 간접적 인 종속성을 갖고 있기 때문에 해결할 수 없습니다 .Runtime, Version = 1.5.11.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a "현재 대상 프레임 워크에서 확인할 수 없습니다. ".NETFramework, Version = v4.0". 이 문제를 해결하려면 "ImInterface.dll"참조를 제거하거나 "System.Runtime, Version = 1.5.11.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a"가 포함 된 프레임 워크 버전으로 응용 프로그램의 대상을 다시 지정하십시오.

모든 C# 프로젝트에서 사용한 것과 동일한 app.config 파일을 추가했지만 C++ 프로젝트에서 효과가없는 것 같습니다. app.config 파일을 인식하려면 특정 디렉토리에 배치하거나 다른 단계를 수행해야합니까? 내 app.config 파일의

내용은 다음과 같습니다

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-2.5.11.0" newVersion="2.5.11.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Threading.Tasks" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-2.5.11.0" newVersion="2.5.11.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
</configuration> 

모든 제안은 감사합니다!

감사합니다, 앤서니

+0

이 앤서니를 고치기 위해 고치셨습니까? 제게 C++과 관련이 없지만 비슷한 오류가 있습니다. –

+0

안녕하세요 James, 불행히도 - 아무도 유용한 조언을 제공해주지 않았습니다. 나는 크리스마스를 그만 두었고 다음 주에 우리가 사용하는 중요한 프로젝트이기 때문에 이번에도 다시 살펴볼 것입니다. 구체적으로 무엇이 문제입니까? C# 프로젝트? 내 게시물에 app.config 파일이 도움이 될 것입니다 ... – Anthony

+0

Mine과 Windows Phone/8 용 C# 및 휴대용 클래스 라이브러리와 관련이 있습니다. http://stackoverflow.com/ 후 얼마 지나지 않아 stackoverflow 관련 질문을 발견했습니다. 질문/12597797/using-async-ctp-with-portable-class-library. 오류가 상당히 비슷하지만 불행히도 문제가되지 않는 것 같지만 –

답변

6

저도 같은 문제를 겪고 그것을 알고 보니, <SpecificVersion>True</SpecificVersion>을 도왔다. 플랫폼 툴셋 - 당신이 읽는 계속하기 전에

, 문제는는 C++/CLI 프로젝트는 "윈도우 XP (v110_xp) 비주얼 스튜디오 2012"을 사용하여 작성 될 때 발생 것 같다 있습니다! WinXP와 호환되는 DLL을 만들 필요가 없다면 대신 "Visual Studio 2012 (v110)"로 전환하면됩니다.

는 내 시나리오 정교 보자

을 나는 C++/CLI 콘솔 응용 프로그램 프로젝트 (ConsoleAppCLI) WINXP (v110_xp) 대상이있다. ConsoleAppCLI는 Microsoft.Bcl.Async는 NuGet을 통해 설치 한 라이브러리 (AsyncLib)을 참조 : 나는 똑같은 문제를 겪고과의 app.config가 도움이되지 않았지만, 도움이 무엇 이었는가

[ConsoleAppCLI.vcxproj] (C++/CLI, .NET 4.0 v110_xp) 
      | 
      | 
    [AsyncLib.csproj]  (C#, .NET 4.0) 
      | 
      | 
[Microsoft.Bcl.Async] (via NuGet) 

다음

  1. 언로드 ConsoleAppCli.vcxproj
  2. 편집 vcxproj 파일 직접
  3. 가있다 라이브러리에 대한 참조를 찾기 비동기 nuget 패키지가 설치되었습니다 (필자의 경우 AsyncLib에 <ProjectReference>).csproj) <ProjectReference></ProjectReference> 사이
  4. , 다음을 추가 <SpecificVersion>True</SpecificVersion>

참고하지만, ConsoleAppCLI는 종속성 트리 내 최상위 프로젝트이었다. 어셈블리에 MSB3268을 생성 한 C++/CLI 어셈블리가있는 경우 마찬가지로 참조에 <SpecificVersion>True</SpecificVersion>을 추가해야합니다 (예 : ConsoleAppCli이 종속성을 갖는 추가 C# 라이브러리가있는 경우 ConsoleAppCli <SpecificVersion>True</SpecificVersion>에 대한 참조를 만들어야합니다. 게다가).

이 솔루션은 over here에서 온 것입니다.

+1

+1 비동기 확장을 사용하는 .Net 4.0 프로젝트에서 동일한 문제가 발생했습니다. 즉, 주 C++ 프로젝트가 더 이상 빌드되지 않습니다. "SpecificVersion"추가하고 모두 좋은 다시 ... 감사합니다 – reSPAWNed

+0

나는 또한 확인할 수 있습니다, 이것은 실제 문제를 설명하고 솔루션이 잘 작동합니다. 고맙습니다! – DiableNoir

관련 문제