• “CS1595: 已在多处定义”错误详解


    我最近又找到了一个方法,可能是最简单,而且最有效的。
    就是把所有命名空间名称改掉,只要和原来不一样就可以。
    发现这个也是在没有办法的情况最坏的办法,没想到是最有效的。我基本上把下面的方法都试过了,还是不行,权限配置也都改了,也不行,我觉得以下的方法只能参考,因为我们平常都是做WEB程序,不可能不用到mscorelib.dll。
    以下是微软的解释和我的理解


    http://support.microsoft.com/?id=318274

    PRB:使用 C# 编译器编译 ASP.NET 资源时出现错误信息"编译错误信息:CS1595"

    本文的发布号曾为 CHS318274
    不管 Web 服务是以 Visual Basic .NET 还是 Visual C# .NET 编写的,Web 服务都使用 C# 编译器编译它们的代理。因此,即使您在使用 Visual Basic .NET 项目,也可能会收到此错误信息。

    请注意,如果您在一页中合并 src codebehind 属性,也会收到类似的编译器错误信息。但是,这会被认为是开发人员的错误。如果您遇到本文介绍的特定问题,该错误信息总是会指定 mscorlib.dll 程序集。

    卷上的默认访问控制列表授予 Everyone 和 Users 组读取和列出文件的权限。但是,有时会删除这些权限以提供更加安全的环境。如果发生这种情况,Csc.exe 则无法调拨路径名称。由于当前 ASP.NET 未向编译器提供 选项,所以编译器包含了程序集的多个例程。使用 Visual Basic .NET 编译器 (Vbc.exe) 编译资源时不会发生此问题。

    本页内容
    症状 症状
    原因 原因
    解决方案 解决方案
    状态 状态
    更多信息 更多信息
    参考 参考

    症状

    当您使用 C# 编译器 (Csc.exe) 编译 ASP.NET 资源时,可能会收到与以下某条错误信息类似的编译器错误信息:
    Compiler Error Message:CS1595:'System.Collections.ArrayList' is defined in multiple places; using definition from 'c:\winnt\microsoft.net\framework\v1.0.3705\mscorlib.dll'
    - 或 -
    Compiler Error Message:CS1595:'System.Runtime.CompilerServices.CompilerGlobalScopeAttribute' is defined in multiple places; using definition from 'c:\windows\microsoft.net\framework\v1.0.3705\mscorlib.dll'
    此问题可能会在第一次尝试运行 Visual C# .NET Web 应用程序或者运行 Microsoft Visual Basic .NET 或 Visual C# .NET Web Service 时发生。

    原因

    发生此问题是因为 C# 编译器无权访问 mscorlib.dll 程序集的路径中的文件夹。

    解决方案

    若要解决此问题,请使用下列方法之一(按优先顺序排列)。

    方法 1:在 C# 编译器定义中包括 /nostdlib 选项

    若要解决此问题,请将 C# 编译器的编译器定义修改为包括 /nostdlib 选项。/nostdlib 选项会禁止导入 mscorlib.dll 程序集,mscorlib.dll 定义于整个 System 名称空间。

    若要在计算机上的 C# 编译器定义中包括 /nostdlib 选项,请按照下列步骤操作:
    1. 打开 Machine.config 文件,然后找到 <compilers> 部分。
    2. 在 C# 的 <compiler> 定义中,添加 compilerOptions 属性,值为 /nostdlib。例如:
    <compiler language="c#;cs;csharp"
    extension=".cs"
    type="Microsoft.CSharp.CSharpCodeProvider, System,
    Version=1.0.3300.0,
    Culture=neutral,
    PublicKeyToken=b77a5c561934e089"
    warningLevel="1"
    compilerOptions="/nostdlib" />
    备注compilerOptions 属性不是增量。如果您需要在 Web.config 文件中或在给定页上忽略此选项,除自定义内容之外,还必须添加 /nostdlib 选项。

    备注:不能将此方法用于使用 XmlSerializer 类或 Web 服务的应用程序,因为 XmlSerializer 使用的编译器调用不继承这些选项。

    方法 2:为 ASPNET 帐户授予列出权限

    要解决此问题,您还可以为下列帐户之一授予"列出文件夹/读取数据"权限: (我认为应该是IIS里的站点目录的权限还有一种可能是% windir %\Microsoft.NET\Framework\ 版本 这个目录,反正我把两个目录都设置了。
    ASPNET 帐户。
    包括 ASPNET 帐户的组。
    进程标识,用于为 mscorlib.dll 程序集路径(通常为 % windir %\Microsoft.NET\Framework\ 版本)中的每个文件夹运行的 ASP.NET 辅助进程。这通常是的卷根目录(例如 C:\),帐户在此没有权限。
    备注:如果使用了 /nostdlib 选项,而且没有使用 Web 服务,则不要使用此方法。

    状态

    这种现象是设计使然。
  • 相关阅读:
    hdu 3507 Print Article —— 斜率优化DP
    bzoj 1096 仓库建设 —— 斜率优化DP
    ORDER BY 高级用法之CASE WHEN
    union和union all 的区别
    Ubuntu 链接ln的使用:创建和删除符号链接
    python中set和frozenset方法和区别
    python之sys模块详解
    odoo 8.0 多核启用
    Odoo 中的widget
    Odoo 在 Ubuntu 环境下性能调优
  • 原文地址:https://www.cnblogs.com/liubiqu/p/71025.html
Copyright © 2020-2023  润新知