gpt4 book ai didi

asp.net - ASP.NET 网页站点中的 NuGet 包和 bin 文件夹

转载 作者:行者123 更新时间:2023-12-02 05:01:09 35 4
gpt4 key购买 nike

这可能是一个非常基本的问题,但是packages 文件夹下的 DLL 复制到 bin 文件夹中的机制是什么?

举个例子,我有一个解决方案,其中包含一个网站类型的“项目”(节点)(即没有 csproj,只是基于文件系统)。这是一个非常基本的静态网站。我想添加 ASP.NET 网页支持,因此我安装 this NuGet package现在 packages 文件夹下有一些 DLL,并且我的 web.config 已更新。但是,当我运行该网站时,它显示 YSOD 并显示错误“无法确定要使用的 ASP.NET 网页版本”,我猜这是因为没有包含 DLL 的 bin 文件夹(当我在 Visual Studio 中从头开始创建“Razor”站点时,bin 文件夹就在那里)。如果我尝试重建解决方案,它会失败并出现相同的错误,这次是编译错误(不是运行时错误)。

packages 文件夹恢复 bin 文件夹的命令或机制是什么?我不想在我的源代码管理中包含 DLL,并且根据 NuGet 文档,似乎非常支持此工作流程。我想如果它是基于 csproj 的项目,就会有一些 MS Build 操作或类似的操作来使用 packages 文件夹中的 DLL,但这是一个网站,我无法定义高级构建操作,我可以吗?

最佳答案

使用 Visual Studio 2013,当我将 NuGet 包(例如 Microsoft.AspNet.Razor)安装到 ASP.NET 网页应用程序中时,就会创建 bin 文件夹。

将二进制文件放入 bin 文件夹是构建过程的一部分,它不是由 NuGet 完成的。 NuGet 可用于将文件恢复到包文件夹中,但恢复时不会对 bin 文件夹执行任何操作。

为了使构建和包恢复正常工作,您似乎需要保留 bin 文件夹和任何 .refresh 文件。您可以从版本控制系统中删除其他二进制文件。

System.Web.Razor.dll.refresh

此文件的内容告诉 Visual Studio 在哪里可以找到 NuGet 包:

 ..\..\Projects\MyWebSite\packages\Microsoft.AspNet.Razor.3.1.2\lib\net45\System.Web.Razor.dll

为了测试这一点,我从 bin 文件夹中删除了所有二进制文件,删除了 packages 文件夹,然后重新构建了项目。 Visual Studio 恢复包,并在构建时将所需的程序集复制到项目的 bin 文件夹中。

关于asp.net - ASP.NET 网页站点中的 NuGet 包和 bin 文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23317272/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com