'.Net'에 해당되는 글 12건

  1. 2007.10.31 .NET 2.0 gacutil.exe, RegSvcs.exe 32bit/64bit 경로
  2. 2007.10.30 VS2005 Strong Name Interop

Visual Studio 2005
.NET Framework 2.0
2007. 10. 31.
안혁
http://hyok.kr

빌드 후 이벤트에서 DLL 등록을 할 경우 환경변수 PATH에 경로를 잡아주면 되지만, .NET 1.1 개발로 동시에 하고 있다면 매번 환경변수를 고쳐주어야 하므로 곤란합니다. 빌드 후 이벤트 실행 시 절대경로를 입력함으로 Visual Studio 2003 이든 Visual Studio 2005  이든 빌드 후 이벤트 작업이 가능하게 하는 것이 좋겠지요.
단, 32비트 윈도우와 64비트 윈도우의 경로에 차이가 있음으로 이를 주의하여야 합니다.

* gacutil.exe

- 32bit
%ProgramFiles%\Microsoft Visual Studio 8\SDK\v2.0\Bin\
- 64bit
%ProgramFiles(x86)%\Microsoft Visual Studio 8\SDK\v2.0\Bin\



* RegSvcs.exe

- 32bit
%windir%\Microsoft.NET\Framework\v2.0.50727
- 64bit
%windir%\Microsoft.NET\Framework64\v2.0.50727



이렇게 하면 Windows를 D에 설치한 사람들도 특별한 경로 변경 없이 해당 명령어를 사용 할 수 있겠습니다.
커맨드 창에서 직접 실행의 경우, 저 경로를 다 입력하는 것은 매우 번거로운 일이지요. 명령어만 입력하면 결국 환경변수 PATH의 영향을 받게 되므로 선호하는 버전을 PATH에 잡아주든지, 각각의 명령 프롬프트(시작->프로그램->Visual Studio 200? 에 있음)를 실행해서 작업해야 하겠습니다. 어떻게 설정했는지 꼭 기억하시구요. 예상치 못했던 에러가 발행할 수 있습니다. 등록한 DLL을 못찾겠다며 멈춰 버린다던지...

Posted by 안혁 windfruit

댓글을 달아 주세요

Visual Studio 2005
2007. 10. 30.
안혁
http://hyok.kr


커맨드 창에서 다음과 같이 입력합니다.

> tlbimp DLL파일이름 /keyfile:키파일이름

ex) tlbimp namomime.dll /keyfile:sn.key

이렇게 실행하면 강력한 이름으로 서명된 Interop DLL인 NAMOMIMELib.dll 이 생성됩니다.


tlbimp.exe는 경로는 다음과 같습니다.

C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\

참고 : http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=243024&SiteID=1


------------------------------------------------------------------------------

Q

In VS2003 C++, I can configure strong names for ActiveX control references so I can sign and build my main assembly.  This is done from the Project  Managed Wrapper Properties.  But I cannot find an equivalent for this in VS2005 C++.  I see properties for references in Project References, but they are grayed out.  Is there a way to sign ActiveX controls/references in VS2005?

Thanks

ps)
Here are more details:

I have a VS 2005 C++ application that uses some COM components.  In order to sign my main assembly, I need to sign the Interop and AxInterop assemblies created for the COM components.

If I try to strong name my main assembly with a key file, then when I compile my application, I get errors similar to these:

LINK : error LNK2022: metadata operation failed (8004041F) : Referenced assembly 'Interop.xxxxxxLib.1.0' does not have a strong name
LINK : error LNK2022: metadata operation failed (8004041F) : Referenced assembly 'AxInterop.yyyyyyyy' does not have a strong name
LINK : fatal error LNK1255: link failed because of metadata errors

So I want to sign the Interop and AxInterop assemblies.

In VS2003, this can be accomplished by these steps:
1. Select Properties from the Project menu.
2. Click on Managed Wrapper in the tree on the left.  You will see $(OutDir)\Interop.$(InputName).dll for the Output Name.
3. Enter the Public Key File value and set the Strong Name type to Key File.
4. Click on Auxilary Managed Wrapper in the tree on the left.  You will see $(OutDir)\AxInterop.$(InputName).dll for the Output Name.
5. Enter the Public Key File value and set the Strong Name type to Key File.

My question is: How do I do the same thing above in VS 2005?
Or, how can I use the assembly linker for Interop and AxInterop assemblies? I don't know which name to use for module name for the assembly linker example in the link you provided:

al /out:MyAssembly.dll MyModule.netmodule /keyfile:sgKey.snk

Thanks,
Alan


A
Bingo!

I finally got it to work today!
Here's what I did for my VC++ 2005 app:

For each project in the solution:
Set the key file to mykey.snk in project properties linker advanced.

For each activex control, execute:
aximp /keyfile:mykey.snk someControl.ocx
(this generates AxsomeControlLib.dll and someControlLib.dll)

For each com library, execute:
tlbimp /keyfile:mykey.snk someComServer.tlb
(this generates someComServerLib.dll)

For each project in the solution that uses the components above:
Remove the current references for the components.
Add the component references using the files output from aximp and tlbimp.

Build the solution.

Note:
aximp and tlbimp are found in:
\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin

Posted by 안혁 windfruit

댓글을 달아 주세요

이전버튼 1 2 이전버튼