[Visual Studio] 解決移至定義時總是開啟中繼資料頁面

  • 5356
  • 0
  • 2015-01-30

摘要:[Visual Studio] 解決移至定義時總是開啟中繼資料頁面

在一個方案(Solution)當中可能會依照功能不同切成多個專案(Project)

而這些專案可能會互相加入參考(References)來使用對方的功能

 

目前有兩個專案在同一個方案內,分別是

- ConsoleApplication3 (主要程式)

- MyLibrary (共用函式庫 DLL)

 

通常我加入參考的方式是直接找到那個DLL,在這個例子裡面的檔案目錄在


ConsoleApplication3\MyLibrary\bin\Debug\MyLibrary.dll

 

那於是我開始引用功能


using MyLibrary; //引用命名空間
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            //使用MyLibrary的類別
            MyClass my = new MyClass(10, "Tim");
            my.DoSomething();
        }
    }
}

 

通常來說這樣是可以運作正常的,但我如果在 MyClass 類別上面按下F12(移至定義)

畫面只會顯示中繼資料(metadata)

在開發過程中上我可能會這邊改改,那邊修修

想到什麼流程需要修改的可能就直接跳過去改

但無法快速轉跳至原始碼無疑是個麻煩

我只想看原始碼,但它總是跑出中繼資料來,這不是我想要的!

 

因為引用目標是採用 DLL 參考,經過編譯後的 DLL 在 Visual Studio 當中沒辦法顯示原始碼,僅列出公開函式

 

解決方法

1. 刪除原先在參考(References)上面的引用

2. 重新開啟加入參考頁面,但是參考選項改採用專案參考方式

 

這麼做除了直接導向原始碼這個好處以外

如果我 MyLibrary 內的程式碼進行重構,例如類別重新命名,它也會連動修改另一個專案中引用到的地方

而且在函式參考也可以更快速的看到有誰引用了這個功能

再加上如果 DLL 修改後可不用經過重新編譯能使用最新版的函式

 

 

我在正視此問題並著手改善之前可能已經不知耗費了數個小時在函式庫重新編譯、不停的切換專案個別重構

想想還真是挺浪費生命的