2009-04-30 49 views

答えて

4

私はこのファイルに1つの違いがあることを発見しました。これは、Assembly.GetReferencedAssembliesへの呼び出しで報告された値と関係しています。 SVNリポジトリのリビジョン番号を埋め込むことで、私たちのバイナリのバージョン番号を追跡していました。最初は私もAssemblyInfo.cppを更新していましたが、バイナリのファイルプロパティの詳細タブには何も報告されていません。このファイルは、ではなく、であり、csprojのAssemblyInfo.csと同様のアップデートのケースであった。なぜ違いが正しいのでしょうか?

このようなcsprojでは、vcxprojを参照し、csprojは、.NET Assembly.GetReferencedAssembliesメソッドを使用して、参照されているすべてのアセンブリのバージョンをログにダンプします。私が発見したのは、ログに記録されていた番号が、私が追加したVS_VERSIONINFOリソース(ファイルの詳細の詳細タブにバージョンの詳細が表示されます)によって与えられたvcxprojのバージョンではありませんでした。代わりに、報告された数値は実際にはAssemblyInfo.cppで定義された数値と一致していました。

したがって、はファイルプロパティの詳細タブで見つかった内容を更新できますが、AssemblyInfo.cppはバージョンをGetReferencedAssembliesに公開することができます。 C#では、これらの2つの報告領域が統一されているようです。おそらく、AssemblyInfo.cppをファイルの詳細に伝播させる方法があるかもしれませんが、私がやるべきことは、ビルド情報をビルド前のステップで両方の場所に複製することです。たぶん誰かがより良いアプローチを見つけることができます。

1

なぜエラーを修正しないのですか?そのメモでは、あなたはどんなエラーを出していますか?

このファイルは、作成したアセンブリを使用するために必要なバージョン番号などの情報を提供します。

+0

エラーはhttp://stackoverflow.com/questions/810827/lnk2022-metadata-operation-failed-driving-me-insane ...に記載されています。ファイルがどのように "間違いなく"必要であるかはよくわかりますそれなしでうまく動作するのですか? – demoncodemonkey

+0

この情報がなければ、コンパイラはアセンブリが1.正しいものであるかどうかを判断できません。リンクした問題は、アセンブリのビルド間の不一致につながります。これを中和することで、コンパイラは違いがあると判断できないため、不一致エラーは発生しなくなりました。 – NotMe

+0

だから、あなたは問題を解決していません。代わりにあなたはそれを隠しただけです。 – NotMe

1

これまでのところ、管理されたC++のDLLにはAssemblyInfo.cppがありませんでしたので、必要ではないと思います。

(ファイルを追加して、自分のC++ dllのバージョン情報を取得したばかりです)。

関連する問題