我创建了用户控件,并在同一项目的页面中对其进行了测试,一切正常。然后,我创建了一个Nuget包并将其添加到目标项目。一切似乎都正常-类型已定义,我可以创建控件。但是,我的控件的子控件未初始化-它们都是null
。我该如何修理?我尝试了不同的汇编寄存器:
<%@ Register TagPrefix="cc" Namespace="SomeNamespace" Assembly="MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=xxx"%>
正如我所描述的那样,这一作品。
此<%@ Register TagPrefix="cc" TagName="CustomControl" Src="../../../_controltemplates/15/Project/CustomControl.ascx" %>
返回解析错误(未在后面找到代码-编译为dll)。
我尝试显式添加ind .cs
文件并删除.ascx
。我想到的唯一解决方案是在构造函数中手动初始化“自定义控件”的所有子控件。但这是不得已的方法。我想为此使用内置机制。
答案 0 :(得分:0)
我找到了某种解决方案。我刚刚添加了两个Register子句
<%@ Register TagPrefix="cc" Namespace="SomeNamespace" Assembly="MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=xxx"%>
<%@ Register TagPrefix="cc" TagName="CustomControl" Src="../../../_controltemplates/15/Project/CustomControl.ascx" %>
并添加到.nuspec
中:
<files>
<file src="ControlTemplates\" target="content\ControlTemplates" />
<file src="Layouts\" target="content\Layouts" />
</files>
将CustomControl.ascx.cs
属性Copy to Outputdirectory
设置为Copy always
之后。
这不是我一直在寻找的解决方案-出现有关控件的多个定义的警告,每次更新程序包后我都必须编辑.csproj
来为文件添加<DependentUpon>
。而且我必须记住在首先下载软件包之前添加一些UserControl和Image映射的文件夹,否则Visual Studio看不到该控件。尽管如此,它仍然有效。