これが可能かどうかさえ疑問に思い始めています。とてもシンプルに思えます。
公開された Web プロジェクトがあります。その公開された Web サイトにいくつかの .ascx ファイル (.cs および designer.cs ファイルを含む) を追加したいと考えています。これらは、元のアプリケーションの一部であるメソッドにアクセスする単純なカスタム ユーザー コントロールです。
質問?ソリューション全体を構築せずに、公開された Web プロジェクトにこれらをドロップすることは可能ですか? そうでない場合、なぜですか?
これらのファイルをドロップしてアプリケーションを実行すると、「解析エラー: タイプ 'カスタム コントロール名前空間の名前' を読み込めませんでした」というエラーが表示されます。
表示するコードはそれほど多くないため、これがすべてです。
デフォルト.aspx
<%@ Page Language="C#" MasterPageFile="~/MasterPages/TwoColumn.master" AutoEventWireup="true"
Inherits="ApplicationName.Web.Default" CodeBehind="Default.aspx.cs" %>
<%@ Register TagPrefix="uc1" TagName="CustomControl" Src="~/Controls/Custom/CustomControl.ascx" %>
<asp:Content ID="content" contentplaceholder="cph" runat="Server">
<uc1:CustomControl ID="cc1" runat="server" CustomProperty="Hello World" />
</asp:Content>
CustomControl.ascx
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="CustomControl.ascx.cs"
Inherits="ApplicationName.Web.Controls.Custom.CustomControl" %>
<asp:PlaceHolder ID="ph1" runat="server></asp:PlaceHolder>
CustomControl.ascx.cs
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace ApplicationName.Web.Controls.Custom
{
public partial class CustomControl : System.Web.UI.UserControl
{
///My logic
}
}
繰り返しますが、とても簡単に思えます。私は何が欠けていますか?それとも、これは不可能ですか?ありがとう。
更新: 私はこれを理解しました。上記のシナリオが可能です。エラー メッセージが示すように、名前空間に問題はありません。むしろ、コード ビハインド宣言です。あらゆる種類のファイルのコード ビハインド ファイルは、アプリケーションの公開時にコンパイルされます。Web ディレクトリをブラウズしたときに編集可能に見える理由については、まだ混乱しています。.dll ファイルなどに保存されているのではないかと思います。たぶん、誰かがこれに光を当てることができます。
とにかく、コード ビハインドをコード ファイルに置き換えると、コード ファイルがコンパイルされないため、アプリケーションの実行時に読み取り可能になるため、問題が修正されます。