如果您有一个ASP.NET Web站点项目类型(没有正确的.csproj或.vpproj项目文件而且只是一个松散文件的文件夹),那么当您使用NuGet添加一个包时,它会生成一个Bin目录中的* .dll.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吗?
答案 0 :(得分:8)
这是基于GC。上面的解决方案。 添加一个类库(csproj)并在网站项目中引用该类库。 将nuget包添加到类库中。 在类库中,实际引用某些类文件中的nuget包。也许创建一个一次性的实例或其他东西。您可以使用包中包含的任何类。这会强制将.dll复制到网站项目中的Bin目录。
答案 1 :(得分:5)
- 编辑 - 请参阅上述解决方案的更新版本。
只需将一个类库项目添加到解决方案中,并将类库项目的引用添加到您的网站。
然后,在类库中添加nuget,而不是网站项目。
当您的网站构建时,它会依次提取所有类库的依赖项。
答案 2 :(得分:0)