그래, 이건 꽤 구체적이라는 것을 알았지 만, 모든 일을 잃어 버렸기 때문에 합리적인 설명이 필요했기 때문에 내 상사와 아내는 그렇지 않았습니다. MSDN에 따르면 나에게
RegAsm regfile 스위치가 코드베이스 스위치와 동일한 출력을 제공하지 않음
화재 :
는 /regfile
스위치
가 /codebase
스위치가
나는 그것을하는 2 가지 다른 방법이었다고 짐작했다. 같은 물건. 진실이었다 내가 잘못했다 :
방법 1
C:\>"C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe" "C:\SERVER.dll" /regfile
Registry script 'C:\SERVER.reg' generated successfully
등록 파일 출력 :
REGEDIT4
[HKEY_CLASSES_ROOT\xfeed.server.X]
@="SERVER.XLS"
[HKEY_CLASSES_ROOT\xfeed.server.X\CLSID]
@="{8F4A5B5E-8DD7-30A3-993F-18C7E2C457CF}"
[HKEY_CLASSES_ROOT\CLSID\{8F4A5B5E-8DD7-30A3-993F-18C7E2C457CF}]
@="SERVER.XLS"
[HKEY_CLASSES_ROOT\CLSID\{8F4A5B5E-8DD7-30A3-993F-18C7E2C457CF}\InprocServer32]
@="mscoree.dll"
"ThreadingModel"="Both"
"Class"="SERVER.XLS"
"Assembly"="SERVER, Version=1.0.0.0, Culture=neutral, PublicKeyToken=6e3de07ee666a5f5"
"RuntimeVersion"="v2.0.50727"
[HKEY_CLASSES_ROOT\CLSID\{8F4A5B5E-8DD7-30A3-993F-18C7E2C457CF}\InprocServer32\1.0.0.0]
"Class"="SERVER.XLS"
"Assembly"="SERVER, Version=1.0.0.0, Culture=neutral, PublicKeyToken=6e3de07ee666a5f5"
"RuntimeVersion"="v2.0.50727"
[HKEY_CLASSES_ROOT\CLSID\{8F4A5B5E-8DD7-30A3-993F-18C7E2C457CF}\ProgId]
@="xfeed.server.X"
[HKEY_CLASSES_ROOT\CLSID\{8F4A5B5E-8DD7-30A3-993F-18C7E2C457CF}\Implemented Categories\ {62C8FE65-4EBB-45E7-B440-6E39B2CDBF29}]
방법이
하지만 내가 직접 코드베이스 스위치 명령을 실행할 때 오히려 reg 파일을 사용하여 r에 영향을받은 키 egsitry이 코드베이스와
C:\>"C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe" "C:\SERVER.dll" /codebase
Types registered successfully
레지스트리 ouptut (위의 출력의 반대로 작업) 다른 :
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{8F4A5B5E-8DD7-30A3-993F-18C7E2C457CF}]
@="SERVER.XLS"
[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{8F4A5B5E-8DD7-30A3-993F-18C7E2C457CF}\Implemented Categories]
[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{8F4A5B5E-8DD7-30A3-993F-18C7E2C457CF}\Implemented Categories\{62C8FE65-4EBB-45e7-B440-6E39B2CDBF29}]
[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{8F4A5B5E-8DD7-30A3-993F-18C7E2C457CF}\InprocServer32]
@="mscoree.dll"
"ThreadingModel"="Both"
"Class"="SERVER.XLS"
"Assembly"="SERVER, Version=1.0.0.0, Culture=neutral, PublicKeyToken=6e3de07ee666a5f5"
"RuntimeVersion"="v2.0.50727"
"CodeBase"="file:///C:/SERVER.DLL"
[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{8F4A5B5E-8DD7-30A3-993F-18C7E2C457CF}\InprocServer32\1.0.0.0]
"Class"="SERVER.XLS"
"Assembly"="SERVER, Version=1.0.0.0, Culture=neutral, PublicKeyToken=6e3de07ee666a5f5"
"RuntimeVersion"="v2.0.50727"
"CodeBase"="file:///C:/SERVER.DLL"
[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{8F4A5B5E-8DD7-30A3-993F-18C7E2C457CF}\ProgId]
@="xfeed.server.X"
당신이 알 수 있듯이, 물건은 Wow6432Node에 지금 및 infos는 훨씬 포괄적입니다 (특히 CodeBase !!!)
누구든지 나에게 합리적인 이유를 줄 수 있다면 나는 잃어버린 하루의 원인으로 초자연적 인 활동을 언급하는 것을 피할 수 있었다. 나는 매우 감사 할 것이다.
64 비트 버전 대신 32 비트 RegAsm을 사용했기 때문에 어셈블리 등록 문제가 발생했습니다. 동일한/Codebase 매개 변수를 사용하여 두 도구에 등록 해보고 도움이되는지 확인하십시오. –
무엇을위한 이유가 있습니까? 이것은 모두 정상입니다. 귀하의 dev 컴퓨터에서/codebase를 사용하고 올바른 regedit.exe 버전으로 레지스트리에 reg 파일을 재생하십시오. c : \ windows \ syswow64 \ regedit.exe (32 비트 COM 서버용) 설치 프로그램을 시작하는 것 외에도 regfile을 사용하는 것이 중요하지 않습니다. –
@HansPassant : 배포를 위해 클라이언트 컴퓨터에서 RegAsm을 호출하는 대신 명시 적 설치 스크립트를 만들고 싶었 기 때문에 regfile을 사용하는 지점이 있습니다. "codebase"가 생성 한 레지스트리 항목을 정확하게 알고 싶었습니다. –