![](/img/trans.png)
[英]Clarifying `.dll.refresh` files, source control, and build of an asp.net web site project
[英]Using NuGet with *.dll.refresh files in ASP.NET “Web Site” projects with Web Deployment Projects
如果您有一个ASP.NET网站项目类型(没有适当的.csproj或.vpproj项目文件,而这只是一个松散文件的文件夹),那么当您使用NuGet添加一个程序包时,它将生成一个* .dll Bin目录中的.refresh文件引用父程序包文件夹中的程序包dll。
例如,如果从程序包管理器控制台执行“ install-package elmah”,则Elmah将放置在项目的解决方案目录的packages文件夹中,文件Elmah.dll.refresh将放置在项目的Bin文件夹中。
当我在本地生成项目时,Visual Studio会自动提取刷新文件引用的DLL。 该站点和Elmah正常运行。 我没有将位于项目Bin目录中的Elmah.dll文件签入到源代码管理中(仅签入了刷新文件和packages文件夹)。
但是,我正在使用Web部署项目来预编译站点,并进行web.config替代部署。 以这种方式构建解决方案时,Elmah.dll不会自动拉入网站项目的Bin目录,并且由于缺少DLL而无法正确运行该网站。
NuGet如何在这种情况下使用? 我是否想在Bin目录中签入Elmah.dll?
这是基于上述GC。解决方案的。 添加一个类库(csproj),并在网站项目中引用该类库。 将nuget包添加到类库。 在类库中, 实际上在某些类文件中引用nuget包 。 也许创建一个一次性实例或其他东西。 您可以使用包中包含的任何类。 这将强制将.dll复制到网站项目中的Bin目录。
-编辑-请参阅上面的此解决方案的更新版本。
只需将类库项目添加到解决方案中,然后将对类库项目的引用添加到您的网站。
然后,将nuget添加到类库中,而不是网站项目中。
当您的网站建立时,它依次提取所有类库的依赖项。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.