使用 Visual Studio 2012 的 Web 应用程序项目中的 App_Code 文件夹

Posted

技术标签:

【中文标题】使用 Visual Studio 2012 的 Web 应用程序项目中的 App_Code 文件夹【英文标题】:App_Code folder in Web Application Project using Visual Studio 2012 【发布时间】:2015-02-22 19:42:51 【问题描述】:

我知道网站项目中 App_Code 文件夹的功能,但是如果我想在 Web 应用程序项目中添加这个文件夹,目的保持不变,即我想在我的应用。

我知道文件属性中的 "Build Action" 选项,如果我们将其设置为 "Compile", Visual Studio 将编译代码(即在 App_Code 文件夹),因此目的失败。但是,如果我将 "Build Action" 保留为 "Content"(这是有道理的),那么我将无法从应用程序的任何其他部分访问此文件夹中的类。

如果我将文件 "Build Action" 保存到 "Content",如何从 App_Code 文件夹外部访问此代码? p>

【问题讨论】:

你想完成什么? 我想访问 App_Code 文件夹中的代码。我还想将“构建操作”保留为“内容”。 很抱歉,您的要求毫无意义。未编译的代码的目的是什么?如果它没有被编译,你认为它会做什么 它在 Web 应用程序项目中没有任何用途。它不用于 Web 应用程序项目。您无法访问App_Code 中文件中的代码因为它没有被编译。代码文件必须在成为代码之前进行编译。否则它们只是没有意义的文本文件。 ... 或您的程序在运行时读取它们的其他操作所需的资源。为模板文件、配置文件等构建操作“内容” 【参考方案1】:

我认为这不是标准的。根据您的需要,您可以使用 .cs(假设为 C#)并构建操作编译而无需创建 dll。对 Web 服务器的第一个请求将为您编译网站。

如果您不希望每次更改 app_code 中的文件时网络服务器都重新编译网站,您将不得不使用脚本方法(您可以参考https://***.com/.../what-is-the-best-scripting-language-to-embed-in-a-c-sharp-desktop-application)。关于脚本的资源很多,这里就不举例了。

【讨论】:

【参考方案2】:

您可以通过反射程序集并以这种方式获取数据来访问应用程序中的任何内容文件。我通常使用 redgate 的反射器之类的工具来查看文件及其命名方式。然后,我使用如下代码将文件实际读入字符串。

这是从另一个答案复制的基本代码。

How to read embedded resource text file

var assembly = Assembly.GetExecutingAssembly();
var resourceName = "MyCompany.MyProduct.MyFile.txt";

using (Stream stream = assembly.GetManifestResourceStream(resourceName))
using (StreamReader reader = new StreamReader(stream))

  string result = reader.ReadToEnd();
 

【讨论】:

OP 对资源只字未提 他询问如何访问其他文件夹中的代码。他可以将属性设置为嵌入并按照我的建议进行操作。所以,是的,他确实问了这个问题。

以上是关于使用 Visual Studio 2012 的 Web 应用程序项目中的 App_Code 文件夹的主要内容,如果未能解决你的问题,请参考以下文章

如何获取microsoft visual studio express 2012 for windows desktop的产品密钥

markdown 使用CTRL + W关闭Visual Studio中的选项卡

Visual Studio 错误:/W 需要一个参数

如何仅使用键盘在 Visual Studio 中导航调用堆栈?

visual studio 2012中如何查看一个工程需要哪些dll文件???

Visual Studio 2010 项目到 Visual Studio 2012