0

我在 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文件夹中我有这些:

  • 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. 仅签入到源代码控制 (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>
4

1 回答 1

1

这是我发现的。

  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 中的警告。

于 2019-04-23T22:17:27.057 回答