Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 澄清“.dll.refresh”文件、源代码管理和asp.net网站项目的生成_C#_Asp.net_Visual Studio_Visual Studio 2017_Dependencies - Fatal编程技术网

C# 澄清“.dll.refresh”文件、源代码管理和asp.net网站项目的生成

C# 澄清“.dll.refresh”文件、源代码管理和asp.net网站项目的生成,c#,asp.net,visual-studio,visual-studio-2017,dependencies,C#,Asp.net,Visual Studio,Visual Studio 2017,Dependencies,我在一个ASP.NET网站项目中工作(,这意味着它没有.csproj文件) 解决方案的结构如下所示: -解决方案 |-DLL ||-AjaxControlToolkit.dll |-包裹 ||-Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1 | | |-(...) ||-RestSharp.106.6.7 | |-(...) |-网站项目 ||-垃圾箱 || |-(.刷新下面列出的文件) ||-packages

我在一个ASP.NET网站项目中工作(,这意味着它没有
.csproj
文件)

解决方案的结构如下所示:

-解决方案
|-DLL
||-AjaxControlToolkit.dll
|-包裹
||-Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1
|   |   |-(...)
||-RestSharp.106.6.7
|       |-(...)
|-网站项目
||-垃圾箱
|| |-(.刷新下面列出的文件)
||-packages.config
||-(其他网站文件)
从源代码管理重新签出后,在
Bin
文件夹中,我有以下内容:

  • AjaxControlToolkit.dll.refresh:

    。\dll\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/
中的任何二进制文件也没有。因此,站点无法验证/运行

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

  • 只签入以
    .refresh
    结尾的文件到源代码管理(TFS)是否正确,并假定生成过程将本地复制二进制文件

  • 如何正确复制
    ajaxcontroltoolkit.dll
    restsharp.dll
    (分别来自
    Solution/dll
    Solution/packages/restsharp.105.2.3
    ),即使相关路径错误

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

  • 注意:由于这是一个网站项目,请确保没有生成前或生成后事件

    谢谢

    另外,
    WebSiteProject/packages.config
    的内容:

    
    
    以下是我的发现

  • 仅签入源代码管理(TFS)是否正确 以.refresh结尾的文件,并假定将复制二进制文件 通过构建过程在本地执行
  • 但是,这不一定是通过“构建过程”实现的(引用,因为实际上没有构建本身)。我发现只需单击解决方案中的另一个项目,然后再次单击该网站项目,就会触发复制。或者,单击解决方案资源管理器顶部栏中的刷新按钮(当网站项目具有焦点时)

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

  • 如何正确复制
    ajaxcontroltoolkit.dll
    restsharp.dll
    (从
    解决方案/dll
    Solution/packages/RestSharp.105.2.3),即使
    相对路径是错误的
  • 经过一些测试,我得出结论,这些路径与项目目录是相对的(在web应用程序项目中是
    $(ProjectPath)

  • 为什么同样的魔法不适用于
    Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll
    和所有人
    roslyn
    目录中的二进制文件
  • 它实际上是为
    Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll.refresh
    工作的。关于
    roslyn/*
    ,请参阅问题1中的警告