ASP.NET имеет специальные папки приложений, такие как App_Code
, которые:
Содержит исходный код для общих классов и бизнес-объектов (например,..cs и .vb файлы), которые вы хотите скомпилировать как часть вашего приложения. В динамически скомпилированном проекте веб-сайта ASP.NET компилирует код в папке App_Code при первоначальном запросе вашего приложения. Элементы в этой папке затем перекомпилируются, когда обнаружены какие-либо изменения.
Проблема в том, что я создаю веб-приложение, а не динамически скомпилированный веб-сайт. Но мне бы хотелось иметь возможность сохранять значения конфигурации непосредственно на С#, а не обслуживать через XML и читать в течение Application_Start
и хранить в HttpContext.Current.Application
Итак, у меня есть следующий код в /App_Code/Globals.cs
:
namespace AppName.Globals
{
public static class Messages
{
public const string CodeNotFound = "The entered code was not found";
}
}
Что может быть в любом месте приложения следующим образом:
string msg = AppName.Globals.Messages.CodeNotFound;
Цель состоит в том, чтобы иметь возможность хранить любые литералы в настраиваемой области, которые могут быть обновлены без повторной компиляции всего приложения.
Я могу использовать .cs
файл чтобы его компилировать, но при этом выделяется App_Code/Globals.cs
из моего вывода.
Q: существует ли способ идентифицировать некоторые части проекта, которые должны динамически компилировать, позволяя предварительно скомпилировать остальную часть проекта?
- Если я установил действие build
content
- файл .cs будет скопирован в папкуbin
и скомпилирован во время выполнения. Однако в этом случае он недоступен во время разработки. - Если я устанавливаю действие сборки на
compile
- я могу получить доступ к объектам так же, как и любой другой скомпилированный класс во время разработки/времени выполнения, но он будет удален из папки /App _Code при публикации. Я все еще могу поместить его в выходной каталог черезCopy Always
, но уже скомпилированные классы, похоже, имеют приоритет, поэтому я не могу нажимать изменения конфигурации без повторного развертывания всего приложения.