我正在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
roslyn / csc.exe.refresh :
..\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
结尾的文件并假定二进制文件将由构建过程本地复制,是否可以签到源代码管理(TFS)吗?
即使相对路径错误,如何正确复制ajaxcontroltoolkit.dll
和restsharp.dll
(分别从Solution/dlls
和Solution/packages/RestSharp.105.2.3
)?
为什么同一个魔术不适用于Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll
和roslyn
目录中的所有二进制文件?
注意:因为这是一个网站项目,所以请确保没有任何构建前或构建后事件。
谢谢。
P.S。 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>
答案 0 :(得分:0)
这就是我发现的东西。
- 仅签入源代码管理(TFS)是否正确 以.refresh结尾的文件,并假定二进制文件将被复制 在构建过程中本地化?
虽然不是,但不一定是“构建过程”(用引号表示,因为实际上实际上不是 build )。我发现只需单击解决方案中的另一个项目,然后再次单击网站项目,就会触发复制。或者,也可以单击“解决方案资源管理器”顶部栏中的“刷新”按钮(当网站项目具有焦点时)。
但是有一个警告:仅适用于直接位于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的警告。