今天在做項目的時候,同事把資源文件簽出去了,我就直接強行簽入,然后運行的時候出現了“ lc.exe 已退出 代碼為 1” 這個錯誤,上網找了一下問題,說是項目用了第三方控件,並且這個第三方組件是個商業組件,他在組件的主使用類定義了LicenseProvider(typeof(LicFileLicenseProvider))
這個Attribute。想了一下,項目確實用的是DEV第三方控件,但問題是這個控件我明明已經破解了怎么還會出現這個錯誤呢?
這個信息出現的原因是你在項目中使用了商業組件的測試版,而在發布的時候使用的是哪個商業組件的破解版。大部分的商業組件經過破解的時候,強名稱簽名就會消失,所以破解的組件與原來的測試版組件的引用信息是完全不同的。故每次編譯的時候,vs2008自動調用語言編譯器之前會調用lc(許可編譯器),就會出現-1錯誤。
VS2008在編譯時檢測到這個類的時候,會檢查到組件使用的是LicFileLicenseProvider這個屬性,表示有組件使用的是把許可的輔助信息保存在license.licx文件中,這個文件保存在vs2008中解決方案資源管理器中的Properties文件夾內。
這個文件的內容實際上是個引用,他保存着你使用的第三方組件主使用類的名稱空間+類名+文件名+文化+PublicKeyToken信息,這個文件是自動生成的。
解決方法就是把Properties文件下的license.licx給刪除,重新編譯,如果還出現這個問題的話,必須將你的破解版的那個組件使用lidism給翻譯成il語言,然后用ilasm重新編譯成dll,在編譯的時候加入 /key=[你的強名稱文件].snk 參數,自己加入強名稱簽名,然后使用vs2008重新編譯,就可以成功了。