澄清`.dll.refresh`文件,源代码控制和asp.net网站项目的构建

时间:2019-04-23 19:58:44

标签: c# asp.net visual-studio visual-studio-2017 dependencies

我正在ASP.NET网站项目as opposed to an Web Application project中工作,这意味着它没有.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文件夹中,我有以下内容:

  • AjaxControlToolkit.dll.refresh

    ..\dlls\AjaxControlToolkit.dll
    
  • Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll.refresh

    ..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\lib\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll
    
  • RestSharp.dll.refresh

    ..\packages\RestSharp.106.6.9\lib\net452\RestSharp.dll
    
  • roslyn / csc.exe.refresh

    ..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\tools\roslynlatest\csc.exe
    

    ...以及roslyn文件夹中以.dll.refresh结尾的其他文件,都与上面的csc.exe.refresh类似。

在建立网站时,这些文件显示在Bin文件夹中:

  • ajaxcontroltoolkit.dll
  • restsharp.dll
  • restsharp.dll.xml

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

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

  1. 仅签入.refresh结尾的文件并假定二进制文件将由构建过程本地复制,是否可以签到源代码管理(TFS)吗?

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

  3. 为什么同一个魔术不适用于Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dllroslyn目录中的所有二进制文件?

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

谢谢。

P.S。 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>

1 个答案:

答案 0 :(得分:0)

这就是我发现的东西。

  
      
  1. 仅签入源代码管理(TFS)是否正确   以.refresh结尾的文件,并假定二进制文件将被复制   在构建过程中本地化?
  2.   

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

但是有一个警告:仅适用于直接位于Bin文件夹中的文件(例如不适用于Bin/roslyn中的文件),无论路径是否正确(我什至尝试了绝对路径) ,它可以在Bin中使用,但不能在Bin/subdir下使用。

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

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

  
      
  1. 为什么同一个魔术不适用于Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll和所有人   roslyn目录中的二进制文件?
  2.   

曾经实际上为Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll.refresh工作。关于roslyn/*,请参阅问题1的警告。