Пространство имен * уже содержит определение для * - PullRequest
4 голосов
/ 19 мая 2011

Я создал отдельную папку и страницы в своем веб-приложении ASP.NET. Когда я строю решение, я получаю ошибку

The Namespace MyApp already contains a defintion for VDS

Вот содержимое VDS.Master.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace MayApp{
public partial class VDS : System.Web.UI.MasterPage
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
}
}

Вот содержимое VDS.Master.designer.cs:

//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated. 
// </auto-generated>
//------------------------------------------------------------------------------

namespace MyApp.VDS {


public partial class VDS {

    /// <summary>
    /// Head1 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.HtmlHead Head1;

    /// <summary>
    /// head control.
    /// </summary>
    /// <remarks>
    /// Auto-generated field.
    /// To modify move field declaration from designer file to code-behind file.
    /// </remarks>
    protected global::System.Web.UI.WebControls.ContentPlaceHolder head;

    /// <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.HtmlForm form1;

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

    /// <summary>
    /// NavMenu control.
    /// </summary>
    /// <remarks>
    /// Auto-generated field.
    /// To modify move field declaration from designer file to code-behind file.
    /// </remarks>
    protected global::System.Web.UI.WebControls.Menu NavMenu;

    /// <summary>
    /// smds1 control.
    /// </summary>
    /// <remarks>
    /// Auto-generated field.
    /// To modify move field declaration from designer file to code-behind file.
    /// </remarks>
    protected global::System.Web.UI.WebControls.SiteMapDataSource smds1;

    /// <summary>
    /// MainContent control.
    /// </summary>
    /// <remarks>
    /// Auto-generated field.
    /// To modify move field declaration from designer file to code-behind file.
    /// </remarks>
    protected global::System.Web.UI.WebControls.ContentPlaceHolder MainContent;

    /// <summary>
    /// lblfoot control.
    /// </summary>
    /// <remarks>
    /// Auto-generated field.
    /// To modify move field declaration from designer file to code-behind file.
    /// </remarks>

Вот содержимое VDS.Master:

<%@ Master Language="C#" AutoEventWireup="True" CodeBehind="VDS.Master.cs" Inherits="MyApp.VDS.VDS" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>Dealer Services</title>
<asp:ContentPlaceHolder ID="head" runat="server">
</asp:ContentPlaceHolder>
<link href="Styles/master.css" rel="stylesheet" type="text/css" />
</head>
<body>

<form id="form1" runat="server">


<div class="container"> 
<div class="header">
<h1>Welcome to Dealer Services </h1>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
</div>
<div class=" clear nav">
    <asp:Menu runat="server" ID="NavMenu" BackColor="Silver" DataSourceID="smds1" 
        DynamicHorizontalOffset="2" Font-Names="Verdana" Font-Size="0.8em" 
        ForeColor="White" Orientation="Horizontal" StaticSubMenuIndent="10px">
        <DynamicHoverStyle BackColor="#284E98" ForeColor="White" />
        <DynamicMenuItemStyle HorizontalPadding="5px" VerticalPadding="2px" />
        <DynamicMenuStyle BackColor="#B5C7DE" />
        <DynamicSelectedStyle BackColor="#507CD1" />
        <StaticHoverStyle BackColor="#284E98" ForeColor="White" />
        <StaticMenuItemStyle HorizontalPadding="5px" VerticalPadding="2px" />
        <StaticSelectedStyle BackColor="#507CD1" />
    </asp:Menu>
    <asp:SiteMapDataSource ID="smds1" runat="server" ShowStartingNode="False" />
</div>
<div class="login">
</div>
<div class="content">
<asp:ContentPlaceHolder id="MainContent" runat="server">

</asp:ContentPlaceHolder>
</div>
<div class="footer">
<asp:Label runat="server" ID="lblfoot">&trade; Veehco Inc. 2011</asp:Label>
</div>


</div>  


</form>
</body>
</html>

Я пытался удалить файл VDS.Master.designer.cs, но ошибка возвращается при каждой сборке. Как мне исправить эту проблему?

Большое спасибо!

Ответы [ 5 ]

8 голосов
/ 19 мая 2011

Есть ли шанс, что вы конвертировали его в веб-приложение с веб-сайта? Иногда я видел эту проблему, вызванную преобразованием.

Первая строка вашего файла VDS.master, вероятно, выглядит примерно так:

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="VDS.master.cs" Inherits="VDS" %>

Проблема, по крайней мере в моем случае, заключалась в том, что он использовал атрибут CodeFile вместо CodeBehind. Если ваш проект действительно является веб-приложением и ваша строка содержит CodeFile, вам нужно изменить его на CodeBehind, чтобы он выглядел примерно так:

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="VDS.master.cs" Inherits="VDS" %>

Причина ошибки заключается в способе обработки этих двух атрибутов:

  • CodeBehind: необходимо скомпилировать до развертывания и скомпилированная сборка кладется в корзину папка вашего сайта.
  • CodeFile: вы развертываете исходный код, и он компилируется как это нужно. Скомпилированный собрание помещается во временный Папка ASP.NET.

Если ваш проект является веб-приложением, но использует атрибут CodeFile, он в конечном итоге будет скомпилирован вами, а затем скомпилирован во время выполнения, что приведет к двум разным сборкам, которые содержат определения для одних и тех же классов. Тогда все взрывается.

4 голосов
/ 24 января 2012

У вас случайно есть файл с именем, совпадающим с пространством имен?

Например, главный файл назван так же, как пространство имен и проект!

0 голосов
/ 10 июля 2013

Это означает, что у вас уже есть 1 определение VDS, где в вашем пространстве имен вы должны это выяснить.Обычно это происходит потому, что вы перемещаете или редактируете файл в VS Studio

В вашем случае,

namespace MyApp{
public partial class VDS : System.Web.UI.MasterPage

Это означает, что вы уже определили MayApp.VDS

после этого.в вашем дизайне

namespace MyApp.VDS {

public partial class VDS {

MyApp.VDS не является пространством имен, VDS является классом

, поэтому вы просто удалите vds в своем файле дизайна теперь будет

namespace MyApp{

public partial class VDS {
0 голосов
/ 09 февраля 2013

Джоэл прямо на отметке, у меня была такая же проблема, и я был склонен переименовать и использовать ярлык. Но, потратив время на исследование, стоило восстановить доверие к инструменту.

У меня был класс Admin в моем проекте в пространстве имен MyNameSpace.

И я пытался создать MyNamespage.Admin.

Я изменил класс администратора на Администратор, и он работает.

0 голосов
/ 20 мая 2011

В файле конструктора и .master у вас есть пространство имен VDS, которое конфликтует с классом VDS.

Измените наследование в .master с:

Inherits="MyApp.VDS.VDS"

на:

Inherits="MyApp.VDS"

и файл конструктора от:

namespace MyApp.VDS {

до:

namespace MyApp {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...