首页 > 解决方案 > 澄清 `.dll.refresh` 文件、源代码管理和构建 asp.net 网站项目

问题描述

我在 ASP.NET 网站项目中工作与 Web 应用程序项目相反,这意味着它没有.csproj文件)

解决方案的结构如下:

-Solution
   |-dlls
   |   |-AjaxControlToolkit.dll
   |-packages
   |   |-Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1
   |   |   |-(...)
   |   |-RestSharp.106.6.7
   |       |-(...)
   |-WebSiteProject
   |   |-Bin
   |   |   |-(.refresh files listed below)
   |   |-packages.config
   |   |-(other website files)

从源代码管理重新签出后,在Bin文件夹中我有这些:

构建网站后,这些文件出现在Bin文件夹中:

但是Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll没有,也没有任何二进制文件roslyn/。因此,该站点无法验证/运行。

我有三个问题,都密切相关:

  1. 仅签入到源代码控制 (TFS) 是否正确,.refresh并假设二进制文件将由构建过程在本地复制?

  2. 即使相对路径错误,如何正确复制ajaxcontroltoolkit.dllrestsharp.dll复制(分别从Solution/dlls和)?Solution/packages/RestSharp.105.2.3

  3. 为什么相同的魔法不适用于目录Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll中的所有二进制文件roslyn

注意:因为这是一个网站项目,所以确保没有构建前或构建后的事件。

谢谢。

PS的内容WebSiteProject/packages.config

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="2.0.1" targetFramework="net472" />
  <package id="RestSharp" version="106.6.9" targetFramework="net472" />
</packages>

标签: c#asp.netvisual-studiovisual-studio-2017dependencies

解决方案


这是我发现的。

  1. 仅将以 .refresh 结尾的文件签入源代码控制 (TFS) 并假设构建过程将在本地复制二进制文件是否正确?

不过,不一定是“构建过程”(在引号中,因为实际上并没有构建本身)。我发现只需单击解决方案中的另一个项目,然后再次单击网站项目,就会触发复制。或者,单击解决方案资源管理器顶部栏中的刷新按钮(当网站项目具有焦点时)。

但是有一个警告:这仅适用于直接在Bin文件夹中的文件(不适用于Bin/roslyn例如文件夹中的文件),无论路径是否正确(我什至尝试过绝对路径,它适用BinBin/subdir.

  1. 即使相对路径错误,如何正确复制ajaxcontroltoolkit.dllrestsharp.dll复制(分别从Solution/dlls和 )?Solution/packages/RestSharp.105.2.3

经过一些测试后,我得出结论,这些路径是项目目录的相对路径($(ProjectPath)Web 应用程序项目中的路径)。

  1. 为什么相同的魔法不适用于目录Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll中的所有二进制文件roslyn

它实际上是Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll.refresh. 关于roslyn/*,请参阅问题 1 中的警告。


推荐阅读