2013-08-19 5 views
1

Я действительно застреваю, пытаясь ссылаться на методы/классы в проекте, импортированном в пустой проект. Точные шаги, чтобы воссоздать это следующим образомКак определить пространство имен для импортированного проекта

  1. Загрузка и извлечение в временную папку http://mywsat.codeplex.com/
  2. Создать новый проект в VS - Asp.Net Пустой веб-приложений .NET 3.5 с именем WebApplication1
  3. Скопировать все файлы из MYWSAT35 папки по новому проекту
  4. В обозревателе решений VS, выберите Показать все файлы

Если теперь построить и запустить проект работает нормально, без ошибок.

5 В обозревателе решений VS, для всех импортируемых файлов правой кнопкой мыши и выберите Включить в Project

Теперь попробуйте перестроить проект я получаю ошибку

The type or namespace name 'GetAdminMasterPage' could not be found 
(are you missing a using directive or an assembly reference?) 

GetAdminMasterPage.cs расположен в WebApplication1\App_Code\class\GetAdminMasterPage.cs и выглядит следующим образом

#region using references 
using System; 
using System.Configuration; 
using System.Data; 
using System.Data.SqlClient; 
using System.Web.Caching; 
using System.Web.UI; 
#endregion 

/// <summary> 
/// Gets the MasterPage for the user selected Admin Theme. 
/// </summary> 
public class GetAdminMasterPage : System.Web.UI.Page 
{ 
    #region Get Admin MasterPage 

    protected override void OnPreInit(EventArgs e) 
    { 
     if (Cache["cachedAdminMaster"] == null) 
     { 
      GetDefaultMasterPage(); 
     } 
     else 
     { 
      string loadMasterFromCache = Cache["cachedAdminMaster"].ToString(); 
      Page.MasterPageFile = loadMasterFromCache; 
     } 
    } 

    private void GetDefaultMasterPage() 
    { 
     try 
     { 
      SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["dbMyCMSConnectionString"].ConnectionString); 
      SqlCommand cmd = new SqlCommand("sp_admin_SelectMasterPage", con); 
      cmd.CommandType = CommandType.StoredProcedure; 

      con.Open(); 

      SqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.SingleResult); 

      if (myReader.Read()) 
      { 
       string masterPageFileName = myReader["ThemeUrl"] as string; 
       Cache.Insert("cachedAdminMaster", masterPageFileName, null, DateTime.Now.AddSeconds(300), System.Web.Caching.Cache.NoSlidingExpiration); 
       Page.MasterPageFile = masterPageFileName; 
      } 

      myReader.Close(); 
      con.Close(); 
      con.Dispose(); 
     } 
     catch (Exception ex) 
     { 
      Response.Write(ex.Message); 
     } 
    } 

    #endregion 
} 

пример одного из методов, которые в настоящее время выдает ошибку является

using System; 

public partial class admin_admin_edit_css : GetAdminMasterPage 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 
} 

//gives error The type or namespace name 'GetAdminMasterPage' could not be found 
(are you missing a using directive or an assembly reference?) 

Так что я знаю, что я должен ссылаться на GetAdminMasterPage с Using xxxxxx;, но просто не могу понять правильный синтаксис.

Во-первых, почему ошибка возникает только при выборе «Включить в проект», а не только при копировании?

Во-вторых, как исправить ошибку с правильным путем до GetAdminMasterPage?

+0

Был ли исходный код веб-сайтом «проект»? Является ли ваш пустой проект проектом веб-приложений? –

+0

Да, я так думаю.Означает ли это, что это невозможно? – user3357963

+0

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

ответ

2

После открытия проекта в качестве веб-сайта щелкните правой кнопкой мыши проект и выберите «Преобразовать в веб-приложение». Результатом преобразования является то, что вы хотите переместить в свой пустой проект, или, возможно, захотите оставить изменения на месте.

+0

Thanks - Эта ссылка была очень полезной http://blogs.msdn.com/b/webdev/archive/2009/10/29/converting-a-web-site-project-to-a-web-application-project. ASPX – user3357963

2

Примечание: вы не создаете новый проект.

1.Копирование MYWSAT35 папку в диске (например: d: \ MYWSAT35)
2.in Visual Studio перейдите в меню Файл -> Открыть веб-сайт
3.Select D: \ MYWSAT35 и нажмите открытая
4. клавиша F5 для запуска приложения

2

Вам необходимо открыть проект как веб-сайт.

Если вы используете VS2010, он предложит вам перейти на .net 4.0. Вы можете выбрать no.

Но если вы открываете в VS2012, он откроет его без подсказок.

Оба здания будут успешно выполнены.

Смежные вопросы