レガシ COM コンポーネントの展開を容易にするために、Web アプリケーションで Reg-Free COM を使用できるかどうかを確認しようとしています。ただし、Interop の状況での使用などを検討する前に、簡単なテストを実行することはできません。これが私がやったことです:-
1) 新しい VB ActiveX DLL プロジェクトを作成します。バイナリ互換性をオンにすることを除いて、すべてのオプションをデフォルトのままにしました。「SayHello」という簡単なメソッドを持つクラスを追加しました。
2) Vs.NET 2008 (SP1) で新しい c# コンソール アプリを作成します。CPU を x86 に設定し、COM DLL への参照を追加しました。
3)参照用に「Isolated」をオンにしました
4)C#コンソールアプリからSayHelloメソッドを呼び出します-すべて機能します。
5) regsvr32 /u を使用して COM dll を手動で登録解除
します。 6) コンソール アプリを再度実行してみます。COM 登録情報が見つからないため、アプリは COM エラーで失敗します。マニフェストが存在することを確認できます(以下に貼り付けます)
それが違いを生む場合、私はこれをVista、64Bitで実行しています。
ご指摘ありがとうございます。
<?xml version="1.0" encoding="utf-8"?>
<assembly xsi:schemaLocation="urn:schemas-microsoft-com:asm.v1 assembly.adaptive.xsd" manifestVersion="1.0" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:co.v1="urn:schemas-microsoft-com:clickonce.v1" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<assemblyIdentity name="TestRegFreeCom.exe" version="1.0.0.0" processorArchitecture="x86" type="win32" />
<file name="TestProject.dll" asmv2:size="20480">
<hash xmlns="urn:schemas-microsoft-com:asm.v2">
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<dsig:DigestValue>uIK8e9FAnH4SQwk6PRfrjdZHWuw=</dsig:DigestValue>
</hash>
<typelib tlbid="{08dcd362-63a1-424a-8c4e-e72dcda2a8e2}" version="1.0" helpdir="" resourceid="0" flags="HASDISKIMAGE" />
<comClass clsid="{c540c43a-4d80-4c87-9091-dff664df0021}" tlbid="{08dcd362-63a1-424a-8c4e-e72dcda2a8e2}" progid="TestProject.Testy" />
</file>
</assembly>