- - PR -
VS2005 でリファクタリング機能が使えない
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-08-17 05:55
いつもお世話になっております。
VS2005でC#で開発していますが、便利なrefactoring機能がいつの間にか使えなくなってしまって困っています。変数を右クリックして Refactoring -> Rename で、その変数の名前の変更を一気にやってしまうものです。 普通にビルドも実行も出来るのですが、リファクタリングをしようとすると「ビルドエラーのためにリファクタリングが出来ません」といった意味のエラーが出てしまいます。リファクタリングのアウトプットを見ると error CS1509: Referenced file 'c:\(途中略)\obj\Debug\Refactor\Common.dll' is not an assembly; use '/addmodule' option instead というエラーが起こっています。該当箇所を見ると、アセンブリマニフェストが無いdllが出来ています。普通にビルドして出来た Debug フォルダの直下のdllはサイズが少し大きく、アセンブリマニフェストがちゃんとあります。 どなたか、原因をご存じないでしょうか? 検索して見たところ、以下のページを見つけましたが、解決法は AssemblyInfo.cs の中で key file のパスを変える、とあります。 http://www.codecomments.com/archive307-2006-4-890529.html しかし、私のケースではパスが間違っているようには見えません(パスを変えると普通のビルドでエラーが出る)。 今の AssemblyInfo.cs の中身はこんな感じです。
| ||||||||
|
投稿日時: 2006-08-17 07:33
別のプロジェクトでは問題ないでしょうか?
とりあえず、問題の切り分けをしましょう。 (Visual Studio 自体がおかしい || そのプロジェクトだけがおかしい) _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-08-17 08:53
じゃんぬさん、どうも有り難うございます。
1つ進展がありました。AssemblyInfo.csの
を絶対パスにすると、全て動作しました。
というわけで「普通のビルドでは相対パスできちんと.snkファイルを指定できているのに リファクタリングの時にはファイルを見つけられずに失敗しているらしい」ということが分かりました。 しかし、何故そんなことが起こるのかがわかりません。また、絶対パス指定のコードのままでいいはずもありません。 この現象は、特定のプロジェクト(と他のいくつかのプロジェクト)で起こっています。全く同じ AssemblyInfo.cs で問題なく動作しているプロジェクトもあります。それらのプロジェクト同士のプリファレンスの違いを探して見たのですが、見つかっていません。 どうぞよろしくお願いします。 | ||||||||
|
投稿日時: 2006-08-19 06:08
自己解決しました。結局、
[assembly: AssemblyKeyFile(@"..\..\..\StrongName\aaa.snk")] のパスが.csprojファイルからの相対パスだったのですが、この行を変更して [assembly: AssemblyKeyFile(@"..\..\..\..\..\StrongName\aaa.snk")] と、DLLからの相対パスに変更したところ、問題なく動作するようになりました。 つまり、 - 普通のビルドの時は.snkへの相対パスは.csprojからでも、.dllからでもどちらでもよい - Refactorのビルドの時は、.dllからの相対パスである必要がある(そうでなければエラー) というワケ分からない状態のようです。 とりあえず、ご報告でした。 |
1