c# - 澄清 `.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
文件夹中我有这些:
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/
。因此,该站点无法验证/运行。
我有三个问题,都密切相关:
仅签入到源代码控制 (TFS) 是否正确,
.refresh
并假设二进制文件将由构建过程在本地复制?即使相对路径错误,如何正确复制
ajaxcontroltoolkit.dll
和restsharp.dll
复制(分别从Solution/dlls
和)?Solution/packages/RestSharp.105.2.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>
解决方案
这是我发现的。
- 仅将以 .refresh 结尾的文件签入源代码控制 (TFS) 并假设构建过程将在本地复制二进制文件是否正确?
不过,不一定是“构建过程”(在引号中,因为实际上并没有构建本身)。我发现只需单击解决方案中的另一个项目,然后再次单击网站项目,就会触发复制。或者,单击解决方案资源管理器顶部栏中的刷新按钮(当网站项目具有焦点时)。
但是有一个警告:这仅适用于直接在Bin
文件夹中的文件(不适用于Bin/roslyn
例如文件夹中的文件),无论路径是否正确(我什至尝试过绝对路径,它适用Bin
于Bin/subdir
.
- 即使相对路径错误,如何正确复制
ajaxcontroltoolkit.dll
和restsharp.dll
复制(分别从Solution/dlls
和 )?Solution/packages/RestSharp.105.2.3
经过一些测试后,我得出结论,这些路径是项目目录的相对路径($(ProjectPath)
Web 应用程序项目中的路径)。
- 为什么相同的魔法不适用于目录
Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll
中的所有二进制文件roslyn
?
它实际上是为Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll.refresh
. 关于roslyn/*
,请参阅问题 1 中的警告。
推荐阅读
- aws-cli - 如何在任何 linux 风格上安装 awscli 而无需先安装 python
- c# - 我需要帮助将两个不同的行(具有相同的列)添加到同一个数据表中
- vega-lite - Vega-Lite 中可视化的间距
- excel - 如何在没有小数的情况下添加尾随 0
- angular - 在 Angular 7 TypeScript 组件的工具栏中使用 Leaflet Draw 插件
- asp.net-core - User.identity.name 在 .net 核心的 cookie 身份验证中为空
- svg - 如何使用 Itext 7 将 SVG 添加到 PDF?
- perl - 如何从命令行将参数输入到 Jenkins perl 脚本中?
- airflow - 任务重试次数超过 Airflow 中指定的重试次数
- scala - 运行 Seq[Column] 时,我在 Scala spark 中收到以下错误