0

我正在尝试构建一个包含多个自定义控件(CommonControls)的可再发行程序集。 我的环境:MSVC 2010、ASP.NET (WebForms) .NET 2.0/3.0/3.5

问题:如果我通过App_GlobalResources 对CommonControls进行本地化,那么使用Web 部署项目编译所有内容都将不起作用。

以下是我构建CommonControls程序集的方式:

我使用包含 .ascx 和 .ascx.cs 文件的网站:

解决方案浏览器

以及具有以下设置的Web 部署项目:

Web 部署项目设置 (CommonControls)

这将创建“CommonControls.dll”。该程序集将在不同的 ASP.NET WebApplication 中使用,如下所示:

网络配置: 网络配置

第一个(次要)问题:将CommonControls添加为依赖项不会自动复制语言的附属程序集。手动将它们复制到正确的输出路径似乎可行(用于调试)。

主要问题:主要Web 应用程序也通过App_GlobalResources本地化并使用Web 部署项目构建:

Web 部署项目设置(

该构建过程将失败

ASPNETCOMPILER:错误 ASPRUNTIME:对象引用未设置为对象的实例。

两个部署项目都创建了一个名为“bin\App_GlobalResources.compiled”的文件,我猜这两个文件不能在同一个输出项目中和平共存。

有没有使用 ASP.NET 内置本地化本地化CommonContolsMain的优雅解决方案?

注意:我正在处理的项目必须与 Apache+Mono 兼容,所以我的项目设置(上面的屏幕截图)必须完全像这样才能正常工作(已经测试了所有其他变体)。

4

1 回答 1

0

我修好了它。它(可能)是由 WDP 使用的 Bin 文件夹中的过时程序集引起的(不时手动清理该文件夹似乎是个好主意)。

我还将文件从“CommonControls\Bin”复制到最终输出(通过预构建事件),这不是必需的,会导致一切中断(用于翻译的卫星程序集由 MSVC 自动复制)。

虽然我的问题+解决方案可能对其他人没有那么有帮助,但它至少是一个教程,如何使用一堆用户控件中的一些自定义控件构建可重新分发的程序集。

笔记:

  • 必须合并自定义控件程序集的所有输出。否则我们将得到 2 个“App_GlobalResources.dll”文件(不起作用)
  • 它仅适用于“网站项目”,不适用于“Web 应用程序”
  • 用户控件必须使用“CodeFile/Inherit”标签,而不是弃用的“CodeBehind”标签(摆脱所有那些“.designer.cs”文件!)
  • 用户控件必须有一个与控件名称不同的“ClassName”标签(我附加了“Internal”并在代码隐藏中重命名了类)
  • “网站项目”不直接支持嵌入式资源(图像、脚本...)。我为此使用了一个额外的 LIB
于 2015-06-10T14:45:07.450 回答