2017-03-22 1 views
0

.NET 프로젝트에서 BITS COM https://msdn.microsoft.com/en-us/library/windows/desktop/aa362708(v=vs.85).aspx을 사용해야합니다. BITS 인터페이스를 감싸는 타사 라이브러리를 사용할 수는 없지만 어쨌든 큰 선택은 없다고 솔직하게 말하면됩니다. 그래서, 분명히 나는 ​​RCW (https://msdn.microsoft.com/en-us/library/5dxz80y2(v=vs.110).aspx)를 생성하는 것에 매달렸고, 그것을하는 가장 일반적인 방법은 tlbimp.exe이지만 경고를 사용했다. 결과에서 나는 C에서 노동 조합이기 때문에 무슨 일이 있었 ++ 및 Tlbimp.exe를 잘 작성을 생성하는 방법을 알고하지 않았다 ComConversionLossCOM interop을 만드는 더 좋은 방법이 필요합니다.

[ComConversionLoss] 
[StructLayout(LayoutKind.Explicit, Size = 8, Pack = 4)] 
public struct BG_AUTH_CREDENTIALS_UNION { 
} 

대부분의 경우로 하나 명의 구조가 표시되어 있습니다. 그런 경우에 대한 유일한 제안은 생성 된 DLL을 ildasm.exe로 디 컴파일하여 수정하고 다시 컴파일하는 것입니다. 나는 기술적으로 그것을 할 수 있다고 생각하지만, 아마도 내가 알지 못하는 더 나은 방법이 있다면 오히려하지 않을 것입니다. 나는 또한 tlbimp2.exe가 내 경우에는 도움이되지 않았으므로 tlbimp.exe에 대한 대안을 찾고 있는데,이 경우를 처리 할 수 ​​있고 결정적 제어를위한 IDisposable 구현으로 COM 래퍼를 이상적으로 생성 할 수 있습니다. COM 개체 수명이 있지만 이것은 별도의 질문입니다. 우선, 제 케이스 (C++ 유니온 타입)를 적절히 다루기위한 다른 툴이 필요합니다. 아무도 그러한 도구를 알고 있습니까?

답변

0

일반적으로 .NET을 완전히 대체하기 위해 .NET이 개발되었습니다. .NET과 COM 간에는 하위 호환성이 있습니다. 그러나 우선 순위는 명확합니다. .NET 코드 (MSIL)> COM> 원시 코드.

다소 일반적으로 사용되는 타사 .NET BITS 라이브러리가 있습니다. COM interop을 수행하는 것과는 대조적으로이를 사용하는 것이 좋습니다. https://stackoverflow.com/a/2299642/3346583 Sharp BITS는 오픈 소스이므로 코딩 요구 사항에 따라 사용할 수 있습니다.

+0

"나는 왜 BITS 인터페이스를 감싸는 타사 라이브러리를 사용할 수 없습니까?"라는 말로 "랩퍼를 사용하지 않는 이유"로 토론을 전환하는 것을 피하기 위해 요점을 이해합니다. 나는 Sharp BITS를 보았다. BITS COM의 래퍼 일 뿐이지 만 회사 정책에 따라 사용할 수 없습니다. 문제는 BITS COM에 대한 RCW를 올바르게 생성하는 것이 있다면 tlbimp.exe에 대한 더 나은 대안을 찾을 수있는 곳입니다. – Alex

+1

로비를 변경하면 정책을 변경할 수 있습니다. 프로그래밍 변경의 현실로, 그것에 관한 정책은 적응해야합니다. 회사 정책은 실제로 여기에서 사용하기 위해 정적 일 수 있습니다 - 설계 지침처럼 쉽게 변경할 수있는 것이 더 좋습니다. 예를 들어 내 computerclub에는 동상에 월간 요금이 있습니다. 법적인 이유로 인해 공증인이 변경해야합니다. 그들은 "정확한 값은 수수료 표를 보았습니다"라고 한 동상을 변경했습니다. 수수료 시트가 훨씬 간단하기 때문에 이제는 더 이상 노테이션을 제출하지 않고도 수수료를 변경할 수 있습니다. – Christopher

관련 문제