none
vb.net 開發觸發程度時,如何把第三方元件也一起部署過去。 RRS feed

  • 問題

  • 請問各位先進:

        在前一次的發問中,已經有解決我的問題,但是真正去參考第三方元件來做部署使用時,卻發生問題。

        首先我先用vs 2015直接發行到sql server 時(同一台電腦),出現

    -------------------------------

    (47,1): SQL72014: .Net SqlClient Data Provider: 訊息 6503,層級 16,狀態 12,行 1 SQL 目錄中找不到組件 'snscomserver_v3.3, version=0.0.0.0, culture=neutral, publickeytoken=null.'。
    (47,0): SQL72045: 指令碼執行錯誤。已執行的指令碼:

    -----------------------------------------------------------------------------------------------------

       後來我有去google上找了一下資料,有利用:

    use test ; 

    create assemble sqltrigger1

    from 'c:\test\dbmsg.dll 

    with permission_set = external_accell 

    出現以下錯誤:


    CREATE ASSEMBLY 失敗,因為 external_access 組件 'SnsComServer_v3.3' 中類型 'CHT.SnsClient.Protocol.SnsConstants' 有靜態欄位 'SNS_MAX_ID_LEN'。external_access 組件中靜態欄位的屬性必須在 Visual C# 中標示為唯讀,在 Visual Basic 中標示為 ReadOnly,而在 Visual C++ 和中繼語言中標示為 initonly。

    ------------------------------------------------------------------------

    請問這個問題要如何解決呢?感謝回答

    環境:windows 10 +vb 2015 +sql server 2012 


    2017年10月4日 上午 09:04

解答

  • 自己開發的還是買的?

    自己開發的是 .Net DLL 還是 COM DLL 還是 Function DLL ?

    買的參考對方提供的散佈須知,自己開發的應該知道散佈時該放哪,在封裝時加入到安裝目錄即可。COM 需註冊。

    COM DLL 可以參考這篇自動註冊:

    [VS2010] 使用 Windows Installer 封裝 VB6 專案


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2017年10月4日 上午 11:30

所有回覆

  • 自己開發的還是買的?

    自己開發的是 .Net DLL 還是 COM DLL 還是 Function DLL ?

    買的參考對方提供的散佈須知,自己開發的應該知道散佈時該放哪,在封裝時加入到安裝目錄即可。COM 需註冊。

    COM DLL 可以參考這篇自動註冊:

    [VS2010] 使用 Windows Installer 封裝 VB6 專案


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2017年10月4日 上午 11:30
  • 你好:

        是要利用emome 的DLL,去透過資料庫的觸發程序去發簡訊。

       也有透過它的註冊程序去做註冊的動作,如果是做windows form的的話,是已經可以發簡訊。只是寫成sql clr 觸發程序專案的話,要發佈時,會發生這樣的錯誤。

        

    2017年10月10日 上午 05:04
  • 架構上不建議您這樣做,因為在SQL CLR的部份,元件不是只有註冊在GAC就可以用,就連.net framework本身的東西也是一樣,簡單來說SQL CLR就是一個封閉的箱子,你要用的東西都要註冊進去
    ,不像一般的應用程式可以直接叫用GAC裡的元件,再者你的3rd元件所用的.net framework是不是有支援
    SQL CLR又是另一個問題了,然後萬一3rd元件又有相依其它元件,那就更麻煩,所以架構上我會建議你這樣做
    (1)寫一個web api selfhost掛在同一台機器上
    (2)用SQL CLR(也就是你現在寫的觸發程序)直接使用httpclient去叫web api
    (3)由web api 去呼叫發簡訊

    微軟免費線上課程

    HTML5 & JavaScript程式開發實戰(MyBook)

    開發ASP.NET您要瞭解的基楚

    http://www.dotblogs.com.tw/ian (MyBlog)

    2017年10月16日 上午 04:01
  • 你能貼出你呼叫 emome dll 的原廠範例程式碼,或是你宣告的方式嗎?

    從宣告方式就可以看出是哪種 dll 類型。


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2017年10月16日 下午 03:44