Я смог добиться того, чего вы хотите, используя. NET Core 3.1.1, но я должен был сделать несколько вещей.
Первый структура вашей папки неверна .
Правильная структура папок:
Обратите внимание, что папка wwwroot перемещена в папку с именем Web .. ТОЛЬКО wwwroot
Второй Правильный способ "преобразования" основного веб-сайта asp. net в библиотеку классов находится здесь:
Итак, создайте основной проект веб-приложения asp. net, затем щелкните правой кнопкой мыши свойства и измените тип вывода.
Третий начиная с проекта библиотеки классов. Если вы начинаете с. NET Базового проекта библиотеки классов, вы можете открыть файл csproj и изменить несколько вещей:
Вот так выглядит мой файл csproj сейчас:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<ApplicationIcon />
<OutputType>Library</OutputType>
<StartupObject />
<EnableDefaultContentItems>true</EnableDefaultContentItems>
</PropertyGroup>
<ItemGroup>
<Content Include="Web\wwwroot\**">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
</Project>
Таким образом, в основном измените Sdk, OutputType, EnableDefaultContentItems и добавьте ItemGroup, чтобы принудительно скопировать все содержимое. t файлы для wwwroot.
Наконец Ваш код должен выглядеть так:
public static void StartApp(string environment)//notice the new parameter
{
var s = Directory.GetCurrentDirectory();
//activate web hosting here
var host = new WebHostBuilder()
.UseEnvironment(environment)//set the environment for debugging mostly
.UseKestrel(o =>
{
o.AllowSynchronousIO = true;
o.ListenAnyIP(5000);
//o.ListenLocalhost(5000);
})
.UseWebRoot(s + "\\Web\\wwwroot")//notice the correct path to client files
//.UseContentRoot(s+"/Web/wwwroot")
.UseStartup<StartUpWeb>()
.Build();
host.Start();
}
И ваша точка входа в консольное приложение:
static void Main(string[] args)
{
System.Console.WriteLine("Hello World!");
Test.Start.StartApp("Development");//pass the environment for debugging
System.Console.ReadKey();
}
Я сделал несколько изменений в вашем коде.
Укажите среду для отладки и загрузки файлов конфигурации и т. Д. c ....
Также укажите Web Root для поиска таких вещей, как клиентские файлы и представления (даже если они скомпилированы это все еще нуждается в сети root).
Вот результат ура !!