【发布时间】:2016-06-30 15:08:55
【问题描述】:
我有一个包含网站的解决方案,其中包含大量文件。
最近发生了必须将一个新网页添加到该站点的情况。使用新文件构建解决方案时,一切正常。 尝试使用 Web 发布向导时,进程中断。
基本上是这样的:
- 新页面(例如 myPage)添加到 webproject
- 在visual studio本地构建,一切正常。最终程序集包含代码库中的所有类。
- 将网站发布到文件系统(右键单击并从 CSProject 发布),预编译会引发错误,提示缺少“myPage”类。
我在三个常用位置检查了 Dll 版本(例如 myWebSite.dll):
- \bin -> 编译代码完整,包括“MyPage”类
- \obj\Debug\Package\PackageTmp\bin -> 编译代码不完整,缺少新类,包括“MyPage”类
- \obj\Debug\AspnetCompileMerge\Source\bin -> 编译代码不完整,缺少新类,包括“MyPage”类
【问题讨论】:
-
obj文件夹确实不包含最终的二进制代码,它本质上是一个临时文件夹。发布不使用来自obj的任何内容。你是如何发布网站的?您使用了哪些设置?您是否选择了错误的文件夹?您使用的是什么版本的 Visual Studio? -
感谢您的回复。 VS 2010 和 2012 版本,完全没有区别。网站通过本地发布到文件系统发布(右键单击项目名称并发布)。使用的设置是:本地文件夹(c:\publish),删除之前发布的所有文件,预编译应用程序
-
您是否清理并重建了解决方案?听起来可能很愚蠢,但有时 VS 会忽略 DLL 已被修改并且不会覆盖它。
-
@panagiotis:我同意你的观点,obj 不包含最终的二进制代码。尽管如此,它仍被用作编译和构建二进制文件的临时存储。然后应该将这些放在一起并“复制”到发布文件夹。事实上,如果我不标记“预编译”,我的发布文件夹中的 dll 版本正是 obj 中的那个
-
不要打你的头,不要寻找错误,至少提供 一些 信息,忘记
obj。如果bin中的 dll 像你说的那样没问题,那你为什么还要打扰obj呢?如果类在 dll 中,您的站点将可以工作。发布 Visual Studio 版本和您使用的设置。同时发布完整错误
标签: c# web-publishing