在 IIS 中运行的 C# 网站中添加新的 .cs 文件
Posted
技术标签:
【中文标题】在 IIS 中运行的 C# 网站中添加新的 .cs 文件【英文标题】:Add new .cs file in C# website running in IIS 【发布时间】:2012-12-03 09:45:38 【问题描述】:我有一个在 IIS 中运行的 C# 网站。我在 App_code 目录下有几个 .cs 文件。我可以在所有 *.aspx.cs 和 *.ascx.cs 文件中引用它们。我没有 Visual Studio,需要手动进行更改。
我现在需要使用 .aspx.cs 文件中的 Web 服务。我使用 wsdl.exe 生成了一个代理类,并将其放在 App_code 目录下。但我无法在我的 aspx.cs 文件中引用该文件。我收到错误
编译器错误消息:CS0246:找不到类型或命名空间名称“TestSearchProxy”(您是否缺少 using 指令或程序集引用?)
代理没有定义任何命名空间,我假设它是默认命名空间。我没有在 aspx.cs 文件中添加任何“使用 *”。
有人可以帮我解决这个问题吗?
我尝试的另一种方法是:
我使用 csc 命令从代理文件生成了一个 dll,并将该 dll 放在 bin 目录下。我仍然无法访问代理类。
【问题讨论】:
为什么不使用 Visual Studio (Express)? 我正在处理现有项目,并且 sln 文件与较新版本的 Visual Studio express 不兼容。我是 C# 和 .net 的新手。你能帮我在没有 Visual Studio 的情况下进行这些更改吗? 您有 MSBuild 版本吗?您可以尝试使用以下命令直接构建 .proj 文件:msbuild /t:Build <name>.csproj
运行 MSBuild Microsoft (R) Build Engine 版本 2.0.50727.5420 [Microsoft .NET Framework,版本 2.0.50727.5466] 版权所有 (C) Microsoft Corporation 2005。保留所有权利。 .\XXXXXX.sln(2):解决文件错误MSB5014:文件格式版本无法识别。 MSBuild 只能读取版本 7.0 和 9.0(含)之间的解决方案文件。
【参考方案1】:
关于第一次尝试:
检查 TestSearchProxy 的命名空间并明确使用它:NameSpace.TestSearchProxy 如果这不起作用,请尝试从生成的代理代码中删除命名空间。 尝试擦除 asp.net 临时目录,这将使它从头开始重新编译 app_code 目录。 (这通常是您尝试的第一件事,因为 IIS 热部署机制有点不稳定)-
停止 IIS 服务
DEL /S "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files*.*"
关于第二次尝试,(把dll放到bin目录下):
您需要添加对它的引用,您可以从您的 aspx 网站根目录中的 web.config 文件中执行此操作:
组件>
或者只是将其添加到 GAC (gacutil -i dllname.dll)。
您还应该检查 dll 是否使用正确的 .net 版本和正确的架构 (x86/x64) 编译以避免冲突,因为这可能是旧系统(没有 4.0 clr/32 位仅)。
【讨论】:
以上是关于在 IIS 中运行的 C# 网站中添加新的 .cs 文件的主要内容,如果未能解决你的问题,请参考以下文章
在 IIS 7 中启动应用程序时出现“CS0016:无法写入输出文件”错误