可再发行程序集

时间:2015-06-01 08:34:24

标签: asp.net localization .net-assembly web-deployment-project app-globalresources

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

问题:如果我通过 App_GlobalResources 本地化 CommonControls ,则使用 Web部署项目编译所有内容将无效。

以下是我如何构建 CommonControls 程序集:

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

Solution explorer

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

Web Deployment Project settings (CommonControls)

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

web.config中: web.config

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

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

Web Deployment Project settings ("Main")

该构建过程将失败

  

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

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

是否有使用ASP.NET内置本地化本地化 CommonContols Main 的优雅解决方案?

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

1 个答案:

答案 0 :(得分:0)

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

我还将文件从“CommonControls \ Bin”复制到最终输出(通过预构建事件),这是不必要的,导致所有内容中断(翻译的附属程序集由MSVC自动复制)。

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

注意:

  • 必须合并自定义控件组件的所有输出。否则我们最终会得到2个“App_GlobalResources.dll”文件(不起作用)
  • 它只适用于“网站项目”,而不适用于“Web应用程序”
  • 用户控件必须使用“CodeFile / Inherit”标签,而不是已弃用的“CodeBehind”标签(去除所有“.designer.cs”文件!)
  • 用户控件必须具有与控件名称不同的“ClassName”标记(我附加了“内部”并在代码隐藏中重命名了类)
  • “网站项目”不直接支持嵌入式资源(图像,脚本...)。我为此使用了额外的LIB