0

我有:

using System.Diagnostics;
using System.Reflection;

namespace Site
{
    public abstract class General
    {

        private static string _version;

        public static string Version { get { return _version; } }

        static General()
        {
            Assembly assembly = Assembly.GetExecutingAssembly();
            FileVersionInfo fileVersionInfo = FileVersionInfo.GetVersionInfo(assembly.Location);
            _version = fileVersionInfo.ProductVersion;
        }

    }
}

代码运行良好,我可以在任何需要访问的地方获取版本Site.General.Version。现在我正在尝试使用内联标记<% = Site.General.Version %>,但我收到一条错误消息System.ComponentModel.ISite,说不包含定义或“常规”....我认为由于interface ISite存在命名空间冲突。

我该如何解决这个问题?

4

2 回答 2

4

我强烈建议更改命名空间或类的名称。你有时可以让它工作,但这会回来咬你。并且编译器错误非常无用,这尤其糟糕,因为这会在重构时咬住你,重构的时间通常与编写代码的时间不同。我从经验中说 - 坏主意。

于 2012-07-02T22:22:34.910 回答
3

尝试将此添加到您的 aspx 顶部

 <%@ Import Namespace="Site" %> 

并像这样更改您的代码

 <%= General.Version %>

编辑

这是对 web.config 上的所有页面执行此操作的语法

<system.web>
      <pages>
           <namespaces>
                <add namespace="Site" />
           </namespaces>
      </pages>
</system.web>
于 2012-07-02T22:23:44.647 回答