我正在使用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
文件夹中我有以下内容:
..\dlls\AjaxControlToolkit.dll
..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\lib\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll
..\packages\RestSharp.106.6.9\lib\net452\RestSharp.dll
..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\tools\roslynlatest\csc.exe
...以及在roslyn
结尾的.dll.refresh
文件夹中的其他文件,都类似于上面的csc.exe.refresh
。在构建网站时,这些文件显示在Bin
文件夹中:
但是,Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll
没有,也没有roslyn/
中的任何二进制文件。因此,该站点无法验证/运行。
我有三个问题,都是密切相关的:
.refresh
结尾的文件并假设二进制文件将在构建过程中本地复制是否正确?ajaxcontroltoolkit.dll
和restsharp.dll
(分别来自Solution/dlls
和Solution/packages/RestSharp.105.2.3
),即使相对路径是错误的?Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll
和roslyn
目录中的所有二进制文件?注意:因为这是一个网站项目,所以确保没有构建前或构建后的事件。
谢谢。
附: 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>
这是我发现的。
- 签入源代码控制(TFS)仅以.refresh结尾的文件并假设二进制文件将在构建过程中本地复制是否正确?
它不一定是“构建过程”(引号中因为实际上没有构建本身)。我发现只需单击解决方案中的另一个项目,然后再次单击该网站项目,就会触发该副本。或者,单击解决方案资源管理器顶部栏中的“刷新”按钮(当网站项目具有焦点时)。
但有一个警告:这只适用于直接在Bin
文件夹中的文件(例如,不适用于Bin/roslyn
中的文件),无论路径是否正确(我甚至尝试过绝对路径,它在Bin
中工作,但不在Bin/subdir
下。
- 如何正确复制
ajaxcontroltoolkit.dll
和restsharp.dll
(分别来自Solution/dlls
和Solution/packages/RestSharp.105.2.3
),即使相对路径是错误的?
经过一些测试后,我得出结论,路径是相对于项目目录的(在Web应用程序项目中将是$(ProjectPath)
)。
- 为什么同样的魔法不适用于
Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll
和roslyn
目录中的所有二进制文件?
事实上它正在为Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll.refresh
工作。关于roslyn/*
,请参阅问题1中的警告。