12

注:将来他の人に役立つ場合に備えて、私は自分の質問に答えています。

エラーが発生しました:

アセンブリ"C:\XYZ.dll"をタイプライブラリに変換できませんでした。タイプライブラリエクスポータで「XYZ」の処理中にエラーが発生しました。エラー:要素が見つかりません。

問題の原因となるコードは次のとおりです。

[Guid("7a4e9867-96a7-43f0-9492-0327b9053853"),
ClassInterface(ClassInterfaceType.None)]
public class TimeSeriesPoint
{
    public string Date { get; set; }
    public float Value { get; set; }
}

[Guid("7a4e9867-96a7-43f0-9492-0327b9053853"),
InterfaceType(ComInterfaceType.InterfaceIsDual)]
public interface IDataHelper
{
    //RCOMServerLib.IStatConnector Connector { set; }
    string Text { set; }
    void DoCallback();
4

2 に答える 2

22

AssemblyInfoファイルから同じGUIDを使用していました。

[assembly: Guid("7a4e9867-96a7-43f0-9492-0327b9053853")]

エラーを解決するには、一意のGUIDを使用する必要があります。

[Guid("C25D485B-F7DE-4F1C-99FE-FFAF5A219B77"),
ClassInterface(ClassInterfaceType.None)]
public class TimeSeriesPoint
{
    public string Date { get; set; }
    public float Value { get; set; }
}

[Guid("FA6F70DD-CDD0-4FF3-94BA-E2B94E68321D"),
InterfaceType(ComInterfaceType.InterfaceIsDual)]
public interface IDataHelper
{
    //RCOMServerLib.IStatConnector Connector { set; }
    string Text { set; }
    void DoCallback();

Visual Studioで一意のGUIDを取得するには、[ツール]メニュー>[GUIDの作成]>4番目のオプション[レジストリ形式] >[コピー]をクリックします。

ここに画像の説明を入力してください

参照:http ://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/a440f695-652c-46d2-bb52-650c6227d3e9

于 2013-03-26T04:18:10.753 に答える
1

同様の問題ですが、最後のエラーステートメントがあります。

Error: Error loading type library/DLL.

tlb私の場合、生成されていない参照プロジェクト/アセンブリがありました。

ただし、regasm手動で実行すると機能しました。tlb参照されるプロジェクト/アセンブリとターゲットの両方に対してを生成しましたAcme.Widgets.dllregasmまた、コマンドラインで指定された関連プロジェクトへの明示的な参照はありませんでした。

@ECHO OFF

pushd "%~dp0"

%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\regasm Acme.Widgets.dll /tlb Acme.Widgets.tlb /codebase 

popd

pause

最終的に、参照されているプロジェクト/アセンブリで、VisualStudio内でCOM相互運用機能の登録設定が有効になっていないことに気付きました。ターゲットに対してのみ有効にするだけで十分だと考えましたが、そうではありませんでした。

参照されたプロジェクト/アセンブリは、COMが要因ではなかった通常の.Netアプリにサービスを提供することから始まりました。

于 2019-10-13T00:44:01.447 に答える