这似乎是唯一有效的方法:
x.Foo
与MyExtensions.Foo
之间对MyExtensions.Foo
的引用不明确的错误。我不明白这种行为。我不确定ASP.NET MVC是否包含App_Code的任何特殊权限,但看起来确实如此...但只是在它自动编译包含.cs文件的扩展方法的意义上,即使构建操作是设为“无”??有人请解释一下。
答案 0 :(得分:0)
我假设你已经创建了一个Web应用程序项目,而不是一个Web站点项目。 ASP.NET应用程序中的App_Code文件夹是特殊的。它旨在允许您放入代码以使其与网站一起编译。因此,项目项标记为“无”,以确保它们不是由Visual Studio编译的。将Web站点项目发布到托管环境时,代码文件本身将复制到App_Code文件夹中,并由ASP.NET运行时编译为单独的程序集。
现在,当您创建MVC Web应用程序时,您必须记住它与Web站点项目的项目类型不同。 MVC Web应用程序将在本地编译到/ bin目录中的程序集。如果使用代码将App_Code文件夹添加到项目中并将Build类型更改为Compile,则会遇到问题,因为:
我的建议是避免使用App_Code。我倾向于不喜欢,因为我赞成更简洁的项目结构。使用Models文件夹代码,或创建其他文件夹.....
如果您确实想要使用App_Code文件夹,最好将任何文件的构建操作标记为“内容”,以确保在发布站点时将它们复制到输出目录。