Уточнение файлов `.dll.refresh`, контроль версий и сборка проекта веб-сайта asp.net - PullRequest
0 голосов
/ 23 апреля 2019

Я работаю в проекте веб-сайта ASP.NET ( в отличие от проекта веб-приложения , то есть у него нет файла .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 нет, и ни один из двоичных файловes в roslyn/.Таким образом, сайт не может проверить / запустить.

У меня есть три вопроса, все тесно связанные:

  1. Правильно ли зарегистрироваться наконтроль версий (TFS) только файлы, оканчивающиеся на .refresh и предполагающие, что двоичные файлы будут скопированы локально в процессе сборки?

  2. Как правильно копируются ajaxcontroltoolkit.dll и restsharp.dll (из Solution/dlls и Solution/packages/RestSharp.105.2.3 соответственно), даже если относительные пути неверны?

  3. Почему одна и та же магия не работает для Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll и для всех двоичных файлов в roslyn directory?

Примечание: поскольку это проект веб-сайта, убедитесь, что нет никаких событий до или после сборки.

Спасибо.

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>

1 Ответ

0 голосов
/ 24 апреля 2019

Вот что я нашел.

  1. Правильно ли регистрироваться в системе контроля версий (TFS) только файлы, оканчивающиеся на .refresh и предполагающие, что двоичные файлы будут скопированы локально по процессу сборки?

Хотя это не обязательно «процессом сборки» (в кавычках, потому что на самом деле build как таковой не существует). Я обнаружил, что простое нажатие на другой проект в решении, а затем повторное нажатие на проект веб-сайта вызовет копирование. Или также, нажав кнопку «Обновить» в верхней панели обозревателя решений (когда проект веб-сайта находится в фокусе).

Но есть предостережение: это работает только для файлов непосредственно в папке Bin (не для файлов в Bin/roslyn, например), независимо от того, правильны ли пути (я даже пробовал абсолютные пути, которые работают в Bin, но не под Bin/subdir.

  1. Как правильно копируются ajaxcontroltoolkit.dll и restsharp.dllSolution/dlls и Solution/packages/RestSharp.105.2.3 соответственно), хотя относительные пути неверны?

После некоторого тестирования я пришел к выводу, что пути являются относительными из каталога проекта (что было бы $(ProjectPath) в проекте веб-приложения).

  1. Почему одна и та же магия не работает для Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll и для всех двоичные файлы в каталоге roslyn?

Это действительно работало на Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll.refresh. Относительно roslyn/* см. Предостережение в вопросе 1.

...