dotnet 运行 不会使用 bower 包
dotnet run won't use bower packages
我有一个 asp.net 核心 Web 应用程序,我正试图在 Docker 容器中获取 运行ning。
在 powershell 中,在项目文件中,我可以 运行 > dotnet restore
然后 > dotnet run
它将 运行 一个 docker 容器:
PS E:\Projects\...> dotnet run
Project MyProject (.NETCoreApp,Version=v1.1) was previously compiled. Skipping compilation.
Hosting environment: Production
Content root path: E:\Projects\...
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.
唯一的问题是,当我转到 localhost:5000
时,似乎没有安装 bower 包(如 Angular)。虽然 webpages/controllers 所有工作,前端 Angular 不会 运行.
它不会 return 找不到 404,它只是不绑定任何 Angular 东西。
如果我 运行 来自 Visual Studio (2015) 的同一个项目,它 includes/runs Angular 不用担心,网站看起来应该如此。查看源码,可以看到包含了angular个文件。
我的Docker文件是:
FROM microsoft/aspnetcore-build
WORKDIR /app
COPY published .
ENTRYPOINT ["dotnet", "MyProject.dll"]
但我认为这是 dotnet run
命令的问题。
如何确保包含 Bower 包并 运行 在 docker 容器中?
编辑 1
我试过 dotnet build
然后 bower install
然后 dotnet run
但没有成功。
之后我尝试用 dotnet publish -o published
发布它,然后 运行 用 dotnet MyProject.dll
从发布的目录中发布它,它做了同样的事情。
当我 运行 来自 Visual Studio 的项目时,页面包含所有脚本:
...
<script src="/lib/jquery/dist/jquery.js"></script>
<script src="/lib/jquery-validation/dist/jquery.validate.js"></script>
<script src="/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js"></script>
<script src="/lib/bootstrap/dist/js/bootstrap.js"></script>
<script src="/js/site.js?v=EWaMeWsJBYWmL2g_KkgXZQ5nPe-a3Ichp0LEgzXczKo"></script>
<script src="/lib/angular/angular.js?v=IuVz88ct2cRJMIP8PVY9rcWTcd2eXzzvz3cdkmfoX2k"></script>
...
但是当我 运行 它同时使用 dotnet run
和 dotnet publish
时 dotnet MyProject.dll
这些脚本不包含在页面源代码中。
固定
原来我是 运行ning dotnet run
,这意味着它是 运行ning 在生产模式下。
视图 Views\Shared\Components\_EnvironmentFooter.cshtml
中有一个文件,页面的所有脚本都包含在该文件中。唯一的问题是脚本包含在开发环境中,而不是生产环境中。
<environment names="Development">
<script src="~/lib/jquery/dist/jquery.js"></script>
<script src="~/lib/jquery-validation/dist/jquery.validate.js"></script>
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.js"></script>
<script src="~/js/site.js" asp-append-version="true"></script>
<script src="~/lib/angular/angular.js" asp-append-version="true"></script>
</environment>
<environment names="Staging,Production">
<script src="https://ajax.aspnetcdn.com/ajax/jquery/jquery-2.2.0.min.js"
asp-fallback-src="~/lib/jquery/dist/jquery.min.js"
asp-fallback-test="window.jQuery">
</script>
<script src="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.6/bootstrap.min.js"
asp-fallback-src="~/lib/bootstrap/dist/js/bootstrap.min.js"
asp-fallback-test="window.jQuery && window.jQuery.fn && window.jQuery.fn.modal">
</script>
<script src="~/js/site.min.js" asp-append-version="true"></script>
</environment>
我在 Production/Staging 环境中包含了开发脚本 - 不再是问题。
Bower 依赖项通常由 dotnet publish
基于 project.json
的 scripts
元素处理。如果您不想 运行 dotnet publish
,请尝试 运行宁 bower install
在 dotnet restore
和 dotnet run
之间。
原来我没有将 bower 中的脚本添加到生产代码中。请参阅上面的编辑。
我有一个 asp.net 核心 Web 应用程序,我正试图在 Docker 容器中获取 运行ning。
在 powershell 中,在项目文件中,我可以 运行 > dotnet restore
然后 > dotnet run
它将 运行 一个 docker 容器:
PS E:\Projects\...> dotnet run
Project MyProject (.NETCoreApp,Version=v1.1) was previously compiled. Skipping compilation.
Hosting environment: Production
Content root path: E:\Projects\...
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.
唯一的问题是,当我转到 localhost:5000
时,似乎没有安装 bower 包(如 Angular)。虽然 webpages/controllers 所有工作,前端 Angular 不会 运行.
它不会 return 找不到 404,它只是不绑定任何 Angular 东西。
如果我 运行 来自 Visual Studio (2015) 的同一个项目,它 includes/runs Angular 不用担心,网站看起来应该如此。查看源码,可以看到包含了angular个文件。
我的Docker文件是:
FROM microsoft/aspnetcore-build
WORKDIR /app
COPY published .
ENTRYPOINT ["dotnet", "MyProject.dll"]
但我认为这是 dotnet run
命令的问题。
如何确保包含 Bower 包并 运行 在 docker 容器中?
编辑 1
我试过 dotnet build
然后 bower install
然后 dotnet run
但没有成功。
之后我尝试用 dotnet publish -o published
发布它,然后 运行 用 dotnet MyProject.dll
从发布的目录中发布它,它做了同样的事情。
当我 运行 来自 Visual Studio 的项目时,页面包含所有脚本:
...
<script src="/lib/jquery/dist/jquery.js"></script>
<script src="/lib/jquery-validation/dist/jquery.validate.js"></script>
<script src="/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js"></script>
<script src="/lib/bootstrap/dist/js/bootstrap.js"></script>
<script src="/js/site.js?v=EWaMeWsJBYWmL2g_KkgXZQ5nPe-a3Ichp0LEgzXczKo"></script>
<script src="/lib/angular/angular.js?v=IuVz88ct2cRJMIP8PVY9rcWTcd2eXzzvz3cdkmfoX2k"></script>
...
但是当我 运行 它同时使用 dotnet run
和 dotnet publish
时 dotnet MyProject.dll
这些脚本不包含在页面源代码中。
固定
原来我是 运行ning dotnet run
,这意味着它是 运行ning 在生产模式下。
视图 Views\Shared\Components\_EnvironmentFooter.cshtml
中有一个文件,页面的所有脚本都包含在该文件中。唯一的问题是脚本包含在开发环境中,而不是生产环境中。
<environment names="Development">
<script src="~/lib/jquery/dist/jquery.js"></script>
<script src="~/lib/jquery-validation/dist/jquery.validate.js"></script>
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.js"></script>
<script src="~/js/site.js" asp-append-version="true"></script>
<script src="~/lib/angular/angular.js" asp-append-version="true"></script>
</environment>
<environment names="Staging,Production">
<script src="https://ajax.aspnetcdn.com/ajax/jquery/jquery-2.2.0.min.js"
asp-fallback-src="~/lib/jquery/dist/jquery.min.js"
asp-fallback-test="window.jQuery">
</script>
<script src="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.6/bootstrap.min.js"
asp-fallback-src="~/lib/bootstrap/dist/js/bootstrap.min.js"
asp-fallback-test="window.jQuery && window.jQuery.fn && window.jQuery.fn.modal">
</script>
<script src="~/js/site.min.js" asp-append-version="true"></script>
</environment>
我在 Production/Staging 环境中包含了开发脚本 - 不再是问题。
Bower 依赖项通常由 dotnet publish
基于 project.json
的 scripts
元素处理。如果您不想 运行 dotnet publish
,请尝试 运行宁 bower install
在 dotnet restore
和 dotnet run
之间。
原来我没有将 bower 中的脚本添加到生产代码中。请参阅上面的编辑。