2012-12-13 60 views
2

我曾在VS項目之前沒有.designer.cs文件。如何刪除ASP.NET Designer.cs文件?

現在我在另一臺計算機上開始了一個新項目,我無法擺脫designer.cs文件。這真讓我煩惱。我真的需要它嗎,我該如何刪除它?必須有某個地方的設置。

+3

你正在處理一個web應用程序,而不是一個網站。 http://stackoverflow.com/a/398049/621962 – canon

+2

保留設計器文件。他們至關重要。 –

+0

是您的源代碼管理下的項目嗎? –

回答

2

你正在處理一個Web應用程序,而不是一個網站(clarification

是,在Web應用程序的情況下,你需要他們。

+0

工作!謝謝。 –

0

是的!你可以刪除它們......這裏是

如何.....如何刪除DESIGNER.CS頁在Web應用程序

巨大的折磨和多少測試尋找一種方式,以避免設計師之後。在Visual Studio(v。2015及更早版本)中的cs頁面,我終於找到了解決這個問題的方法。如果有人在Visual Studio中使用Web應用程序項目中的designer.cs頁面,則此解決方案將允許您快速擦除所有應用程序編譯錯誤,然後從您的項目中完全刪除designer.cs頁面。

先了解以下內容:

Web應用程序項目使用designer.cs頁(局部類)由Visual Studio自動生成的,並且被綁定到內置的Web應用程序,其Web應用程序的設計工具模型維持。我把它稱爲虛擬網站。我無法找到任何設置或方法來關閉部分類和designer.cs頁面的創建,因爲它們往往是不必要的代碼,而不是應用程序的功能。無論如何,所有的部分類都被編譯成一個類。一般來說,Web應用程序也可以提前進行預編譯或設計,並且這些DLL會被推送到bin文件夾中。

網站項目不使用designer.cs文件,並且不太依賴IDE。它們允許對班級結構進行更清晰的編碼。他們也使用部分類。但網站項目通常會在運行時進行編譯。

解決方案 - 如何從Visual Studio中的Web應用程序項目中刪除「... designer.cs」錯誤和文件。

除非您想將Web項目從應用程序轉換爲Visual Studio中的Web站點模型,否則下面的此解決方案允許您按原樣運行項目,但又像網站一樣,您可以將大部分或全部designer.cs將該文件中的部分類控件引用導入到您的主網頁部分類文件中。它還消除了所有錯誤,並且不會干擾Visual Studio重新創建這些設計器文件,如果其他開發人員共享它們並向頁面添加控件並忘記在特定頁面上使用此解決方案。

  1. 在前端.aspx頁面的頂部@PAGE指令中,將「CodeBehind」更改爲「CodeFile」。確保它仍然引用相同的.cs代碼或類文件。

  2. 將「CodeFileBaseClass」屬性添加到您的網頁中相同的@Page指令,並使用路徑中的任何名稱空間訪問上述相同.cs的完全限定路徑。

  3. 請確保您使用與「CodeFileBaseClass」具有相同路徑的「Inherit」屬性。

你應該有與這些屬性格式化爲這樣的Web應用程序的每個網頁如下:

<%@ Page Language="c#" CodeFile="index.aspx.cs" CodeFileBaseClass="YourNameSpace.index" 
Inherits="YourNameSpace.index" %> 

現在進入你designer.cs文件的頁面和複製任何控件引用從設計器文件中的部分類轉換爲網頁的主要.cs文件的部分類。如果你已經丟失了你的designer.cs文件,只需要把所有的web控件作爲字段引用添加爲編譯器認爲缺失的字段。在完成之後,刪除designer.cs文件。您不需要它們,並使用主要的.cs文件及其部分類完全控制您的網頁控件。

下面是我在刪除它之前在designer.cs文件中。下面是我的項目的主要index.aspx.cs文件,我在其partial class中添加了designers.cs控件引用作爲字段。然後,我從我的項目中刪除的designer.cs文件和它的代碼完全:

namespace YourNameSpace 
{ 
public partial class WebForm1 
{ 

    /// <summary> 
    /// form1 control. 
    /// </summary> 
    /// <remarks> 
    /// Auto-generated field. 
    /// To modify move field declaration from designer file to code-behind file. 
    /// </remarks> 
    protected global::System.Web.UI.HtmlControls.Literal Message1; 
} 
} 

在我index.aspx.cs文件,下面你可以看到我貼的最後一個「消息1」的參考從設計師線以上成其頂部的部分類。您可以看到我是如何在我的Page_Load事件中訪問網頁文字控件Message1並修改文本的。這表明它被正確引用現在,編譯和工作,而以前這些引用失敗,如果designer.cs文件丟失或其部分類失敗:

namespace YourNameSpace 
{ 
public partial class index : System.Web.UI.Page 
{ 
    protected global::System.Web.UI.WebControls.Literal Message1; 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     this.Message1.Text = "hello world"; 
    } 
} 
} 

的關鍵,固定,這是CodeFileBaseClass和的CodeFile屬性在主網頁的@Page指令中。這可以防止網頁中的新成員引用和控件被Visual Studio IE自動生成,並作爲存根設計器頁面部分類中的存根(當我想在完全控制單個方便區域中的這些字段時對我沒有幫助) 。注意:如果您稍後通過在VS中選擇項目再次爲您的項目重新生成designer.cs文件,然後在頂部菜單中選擇Project>「轉換爲Web應用程序」那些designer.cs文件將被重新創建,但是BUT Visual Studio只會將缺少Web控件的引用放置在它們中,而現在這些引用不會添加到主要的.cs部分類頁面中。換句話說,我複製並添加到我的index.aspx.cs分部類文件的任何引用都不會在新的designer.cs文件中重新創建。因此,與您正在使用的Web應用程序模型沒有衝突。當您看到這些設計器文件時,您現在可以讓開發人員安全地將它們複製到您的主要代碼中,並放在.cs文件後面,並根據需要安全刪除設計器。