ShowProgramCode

2021年5月10日 星期一

重灌window後,Asp.Net的專案無法執行了

 很不幸,周末去檢查確定我的電腦硬碟可能快不行了,只好重灌windows,然後把所有的檔案拉到USB裡面。

但是今天上班後,重新執行卻發現Visual Studio無法執行。

錯誤代碼大致有"HTTP 錯誤 500.19 - Internal Server Error"、"無法存取要求的網頁,因為與該網頁相關的設定資料不正確"、"無法讀取設定檔案,因為權限不足"。

後來查了資料才確定是因為專案中的.vs資料夾內會和新OS產生衝突,只要把.vs資料夾殺掉,然後重新執行就可以了。

雖然是一場烏龍,不過仍然要記下來,提醒自己下次注意。

備註:版控的ssh密鑰也需要重設(哭)。

2021年5月3日 星期一

C# 如何取得 Enum 的 Description 描述字串

 看了很多資料,不過到最後還是搞不清楚,所以實作看看。

最後建立一個靜態物件,暫時放在專案資料夾最外層。

然後寫了一個測試檔,可以順利讀取到Enum的Description描述字串。

最開始希望能用Enum.Field.GetDescription(),不過沒有成功,如果之後找到其他方法可能會繼續補充。


程式碼:

public static class EnumHelp

    {

        public static string GetDescription(this Enum value)

        {

            Type type = value.GetType();

            string name = Enum.GetName(type, value);

            if (name != null)

            {

                System.Reflection.FieldInfo field = type.GetField(name);

                if (field != null)

                {

                    DescriptionAttribute attr =

                           Attribute.GetCustomAttribute(field,

                             typeof(DescriptionAttribute)) as DescriptionAttribute;

                    if (attr != null)

                    {

                        return attr.Description;

                    }

                }

            }

            return null;

        }

    }

測試碼:

public enum TestEnum

    {

        [Description("Test001")]

        One = 1,


        [Description("Test002")]

        Two = 2,


        [Description("Test003")]

        Three = 3

    }


    [TestClass]

    public class DemoTest

    {

        [TestMethod]

        public void EmunHelpTest()

        {

            string enumOneDescriptionChk = "Test001";

            string enumTwoDescriptionChk = "Test002";

            string enumThreeDescriptionChke = "Test003";


            string enumOneDescription = EnumHelp.GetDescription(TestEnum.One);

            Assert.AreEqual(enumOneDescription, enumOneDescriptionChk);


            string enumTwoDescription = EnumHelp.GetDescription(TestEnum.Two);

            Assert.AreEqual(enumTwoDescription, enumTwoDescriptionChk);


            string enumThreeDescription = EnumHelp.GetDescription(TestEnum.Three);

            Assert.AreEqual(enumThreeDescription, enumThreeDescriptionChke);

        }

    }

C#中同一方案中不同專案共用libary

 如題,我做這個案子時,發現四個專案內有許多物件、函式非常相像。

不希望維護多個類似的程式碼,所以我想要把四個專案拉進同一個方案中,然後再加一個專案,專門放共用的函式庫以及測試碼。

最終成功的方法,要將所有專案放入同一個方案,然後把共用的那個專案在另外四個專案中設置「參考」。

之後便可以在那四個專案中,呼叫到被參考的共用專案中的所有檔案。

下面我用了另一個Demo來截圖表示,裡面只有兩個專案,是為了自己忘記這個方法的備註。

第一是方案總管截圖,可以看到這個Demo的結構。


圖二顯示Demo02的參考內容


圖三是Demo01的主程式

圖四是Demo02的主程式