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

问题描述 投票:0回答:1

我正在使用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
  • 罗斯林/ 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. 签入源代码控制(TFS)只检查以.refresh结尾的文件并假设二进制文件将在构建过程中本地复制是否正确?
  2. 如何正确复制ajaxcontroltoolkit.dllrestsharp.dll(分别来自Solution/dllsSolution/packages/RestSharp.105.2.3),即使相对路径是错误的?
  3. 为什么同样的魔法不适用于Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dllroslyn目录中的所有二进制文件?

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

谢谢。

附: 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.net visual-studio visual-studio-2017 dependencies
1个回答
0
投票

这是我发现的。

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

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

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

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

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

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

事实上它正在为Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll.refresh工作。关于roslyn/*,请参阅问题1中的警告。

© www.soinside.com 2019 - 2024. All rights reserved.