iT邦幫忙

0

ASP.NET開發的網頁封裝問題

如題,同事有一個利用ASP.NET加上MSSQL架構的網站,老闆要拿去show,但又不想將source code給別人,最好是能封裝成一個執行檔案,到時候直接在展示機器上面按個兩下安裝起來就能用,因此問我是否有方式可以達成,可我做過的都是要交碼的,只能上來請教各位,麻煩了。

2 個回答

8
純真的人
iT邦高手 1 級 ‧ 2014-01-08 09:40:46
最佳解答

這個不讓code顯示的編譯方式,我是用.bat檔在跑的~

<pre class="c" name="code">
rem "先刪除原編譯目錄"
rmdir /s/q "C:\inetpub\wwwroot\ASP\網站\Compiled\"

rem "建立編譯的目錄"
mkdir "C:\inetpub\wwwroot\ASP\網站\Compiled\"

rem "將asp.net原始碼編譯到指定的目錄"
C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_compiler.exe -v /chuleitr -p "C:\inetpub\wwwroot\ASP\網站\Source" "C:\inetpub\wwwroot\ASP\網站\Compiled"

編譯好後,code就不會直接顯示,然後你可以參考iis免安裝,在把網站路徑指好,就可以顯示網站。
相關參考:
http://www.minwt.com/server/748.html

然後若有用SQL Server的部分,這部分就從你自己公司的主機外連出來吧,減少展示機的負載。(我猜展示機,會借人使用幾天..)

看更多先前的回應...收起先前的回應...

IIS免安裝的原理:

那是利用Visual Studio附的IIS 模擬執行檔,例如位置在
C:\Program Files\Common Files\microsoft shared\DevServer\10.0
你可以把他複製出來,自己做一個vb.net執行介面檔~

當然你也可以做一個.bat檔,直接點擊顯示網站~
例如:複製資料夾到桌面來測試
啟用Asp.net 程式開發伺服器

<pre class="c" name="code">
cd C:\Users\compaq\Desktop\IIS執行
WebDev.WebServer40.exe /port:8888 /path:C:\inetpub\wwwroot\ASP\網站\Compiled

再開啟IE來瀏覽,例如:

<pre class="c" name="code">
cd C:\Program Files\Internet Explorer\
iexplore.exe "http://localhost:8888/"
halawing iT邦新手 2 級 ‧ 2014-01-09 15:09:04 檢舉

jer5173提到:
例如:複製資料夾到桌面來測試

請問這個"資料夾"指的是甚麼?

我自己已經測試這方式成功了~
我在XP Home上,可以直接執行asp.net網站~

請問這個"資料夾"指的是甚麼?

那是指說~可以不用在特定位置才能執行

你可以先試著測試寫看看,我遇到幾個狀況~你可以先處理~(你自己的電腦要有裝VS才找的到)
狀況如下:
1.目標電腦必須安裝framework 4.0以上版本。
2.然後在C:\Windows\Microsoft.NET\assembly\GAC_32\下,放你自己電腦的WebDev.WebHost40資料夾檔案。
3.要在你的電腦拷貝gacutil.exe檔案,例如目錄位置為C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin
4.利用gacutil.exe註冊WebDev.WebHost40.dll檔案,這個WebDev.WebHost40.dll檔案位置在C:\Windows\Microsoft.NET\assembly\GAC_32\WebDev.WebHost40\v4.0_10.0.0.0__b03f5f7f11d50a3a下可以找到~(這個目錄也是複製到相同目標電腦的位置下~)
5.註冊WebDev.WebHost40.dll檔案方式如下,
gacutil.exe -if WebDev.WebHost40.dll
6.以上的過程你慢慢體會試試吧@@~我自己已用vb.net把這些都打包使用~一次到位就可以了。

這是我自己寫的介面~呵

程式碼分段貼= =

<pre class="c" name="code">
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If FolderBrowserDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
            TextBox1.Text = FolderBrowserDialog1.SelectedPath
        End If
    End Sub

放棄...後面太長了= =..貼重點就好了~

<pre class="c" name="code">
            If System.Diagnostics.Process.GetProcessesByName("WebDev.WebServer40").Length > 0 Then
                Dim pProcess() As Process = System.Diagnostics.Process.GetProcessesByName("WebDev.WebServer40")

                For Each p As Process In pProcess
                    p.Kill()
                Next
            End If

            Shell(Application.StartupPath & "\WebDev.WebServer40.EXE /port:" & TextBox2.Text & " /path:""" & TextBox1.Text & """ ", AppWinStyle.Hide)

            If System.Diagnostics.Process.GetProcessesByName("WebDev.WebServer40").Length > 0 Then
                System.Diagnostics.Process.Start("Iexplore.exe", "http://localhost:" & TextBox2.Text)
            Else
                MsgBox("ASP.NET程式開發伺服器執行失敗。", , "啟動錯誤")
            End If

這些應該很夠你研究玩玩了吧~~晃@@

8
player
iT邦大師 1 級 ‧ 2014-01-07 18:08:40

用Visual Studio 2013 Pro版以上, 發行網站
再用上混搖器
再用InstallShield打包安裝檔
不過MS-SQL Server與IIS沒辦法打包進去, 要手動先裝

halawing iT邦新手 2 級 ‧ 2014-01-09 14:46:08 檢舉

謝謝您的回答,
另外到時是放在一台電腦show, 並沒有internet

我要發表回答

立即登入回答