Microsoft.WebApplication.targets не знайдено на сервері збірки. Яке ваше рішення?


410

Спроба побудувати мій проект на сервері збірки дає мені таку помилку:

Microsoft (R) Build Engine Version 4.0.30319.1
error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\TeamData\Microsoft.Data.Schema.SqlTasks.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.

Я вирішив цю проблему кілька місяців тому, встановивши Visual Studio 2010 на Build Server. Але тепер я налаштовую новий сервер з нуля, і хочу знати, чи є краще рішення для вирішення цього питання.


1
Чи застарілі проекти веб-додатків? Цікаво, що обґрунтовує необхідність використання старих версій Visual Studio для їх побудови?
бріанарія

1
Більш суттєво, ви насправді розгортаєтесь через сервер збирання? наприклад, у мене немає, у мене навіть є окремий проект веб-інсталятора в рішенні ... і він все ще хоче цю криваву річ ... відповідь = видаліть його з файлу proj! легко.
Пол Захра


1
Виправлено шляхом заміни <Import Project="..\Packages\MSBuild.Microsoft.VisualStudio.Web.targets.14.0.0.3\tools\VSToolsPath\WebApplications\Microsoft.WebApplication.targets" />шляху на $(VSToolsPath):<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" />
GJ

Відповіді:


207

Щоб відповісти на назву питання (але не на питання про отриманий результат):

Скопіювавши таку папку із свого пристрою розробників на сервер збирання, виправляє це, якщо це лише веб-програми

C: \ програмні файли (x86) \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ WebApplications

Видаліть x86 відповідно до того, як розбивається збірка. Якщо у вас є інші типи проектів, вам, ймовірно, доведеться скопіювати всю папку msbuild.


11
Це працювало на м2 з проектом VS2012, після заміни v10.0 на v11.0
DenNukem

2
чи не можемо ми просто встановити інструменти MSBuild замість цього? microsoft.com/en-us/download/confirmation.aspx?id=40760
user20358

1
На жаль, встановлення інструментів MSBuild недостатньо для створення проектів, які добре складатимуться у VisualStudio 2013
Michael Shaw

Мені довелося скопіювати веб-папку в v11.0, щоб вона працювала після встановлення VS2013, вона там відсутня. Не вдалося компілювати в VS, але не через MSBUILD безпосередньо.
Мартін Браун

9
працював на VS2017 просто скопіюйте C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ vXX.0 \ WebApplications to C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v15.0 \ WebApplications
jokab

95

Створення та публікація WAP не підтримується, якщо VS не встановлено. Зважаючи на це, якщо ви дійсно не хочете встановлювати VS, вам потрібно буде скопіювати всі файли в %ProgramFiles32%\MSBuild\Microsoft\.

Вам також потрібно буде встановити Інструмент веб-розгортання . Я думаю, що це все.


4
Сказане - див. Нижче відповідь від дещо - чи правильна ваша відповідь? Навіть встановлення пакета інтеграції Shell VS 2010, і .NET SDK не буде правильно встановити підтримку проекту веб-додатків?
Адам

@SayedIbrahimHashimi Чи потрібно вам зареєструвати DLL в GAC, якщо ви робите копію папки вручну?
TheOptimusPrimus

А як щодо Microsoft.TextTemplating.targets? Що я повинен зробити, щоб потрапити до них у свою папку? C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v10.0
Розробник

@ClarkKent, вибачте, що не можу говорити з файлом TextTemplating. Я з ними не знайомий.
Сказав Ібрагім Хашімі

77

UPD: станом на VS2017, у Build Tools є завантаженість, яка повністю усуває цю проблему. Дивіться відповідь @SOReader .

Якщо ви хочете нічого не змінювати на сервері збірки, і ви все ще хочете, щоб проект будувався прямо з керування джерелом, можливо, буде гарною ідеєю поставити потрібні бінарні файли під контроль джерела. Вам потрібно буде змінити розділ імпорту у файлі проекту, щоб виглядати так:

<Import Project="$(SolutionDir)\BuildTargets\WebApplications\Microsoft.WebApplication.targets" />
<Import Condition="false" Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />

Перший рядок - це фактичний імпорт з нового місця розташування, що відносно каталогу рішень. Другий - це вимкнена версія ( Condition="false") оригінальної лінії, яка дозволяє Visual Studio як і раніше вважати ваш проект дійсним проектом веб-додатків (це трюк, який VS 2010 SP1 робить сам).

Не забудьте скопіювати C:\Program Files (x86)\Microsoft\VisualStudio\v10.0\WebApplicationsв BuildTargetsпапку під вашим контролем джерела.


Це рішення працювало для мене і було дійсно найкращим варіантом у моєму випадку. Це тому, що у мене немає доступу до сервера збірки. Я використовую еластичний бамбук Atlassian, який створює новий сервер, який виконує функції сервера збірки. На перший погляд не здається, що ці AMI включають цілі веб-додатків ?? Для мене це не має сенсу, але так виглядає.
Коді Кларк

1
Це хороший підхід, але ця зміна потребує зміни кожного файлу csproj. Це складно, якщо ви додасте нові проекти до рішення. Звичайно, це можна вирішити за допомогою спеціальних шаблонів проектів, але все ж. Дякую!
100р

75

Зараз у 2017 році ви можете встановити перелік веб-додатків за допомогою MSBuildTools. Просто перейдіть на цю сторінку, де буде завантажено інструменти MSBuild 2017, і під час встановлення натисніть, Web development build toolsщоб також встановити ці цілі: введіть тут опис зображення

Це призведе до встановлення відсутніх бібліотек C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0\WebApplicationsза замовчуванням


2
Я дуже здивований, що мій п’ятирічник про упаковку ліфтів у контроль джерел, і його модифікації досі отримують голоси навіть сьогодні, хоча це вірно не відповідає.
Андрій К

2
@AndriyK Ваше рішення трохи відрізняється від того, що я запропонував, і я розумію, чому хтось може віддавати перевагу вашому над моїм ... якщо тільки це не лінь; D
SOReader

2
Щоб зробити це більш загальним, для майбутніх версій Visual Studio можна завантажити найновіші інструменти збирання з visualstudio.microsoft.com/downloads Прокрутіть сторінку вниз і внизу розгорніть розділ "Інструменти для Visual Studio", а потім завантажте " Інструменти побудови для Visual Studio ". Наразі вони призначені для VS 2017, але я припускаю, що це буде те саме для майбутніх версій. До речі, якщо вам потрібен шлях до msbuild.exe для вашого інструмента CI (наприклад, Jenkins), для VS 2017 він буде встановлений на C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ BuildTools \ MSBuild \ 15.0 \ Bin \ msbuild.exe.
Саймон Тевсі

2
Сумісний з побудовою-сервером (читати: командний рядок) спосіб це зробити choco install visualstudio2017-workload-webbuildtools.
Пол Хікс

1
Також зазначу , що пакет «Веб збірки розробки інструментів» , Microsoft.VisualStudio.Workload.WebBuildToolsможе бути встановлений з допомогою командного рядка з допомогою виклику vs_BuildTools.exe --add Microsoft.VisualStudio.Workload.WebBuildTools. Додайте, --passiveщо не потрібно втручання користувача.
Вай Ха Лі

70

Ви також можете використовувати пакет NuGet MSBuild.Microsoft.VisualStudio.Web.targets , посилаючись на них у своїх проектах Visual Studio, а потім змінити свої посилання, як пропонує Андрій К.


2
Використовувати це неможливо, тому що я повинен відкрити рішення спочатку, але я не можу через помилку.
Розробник

Якщо в рішенні є більше одного проекту, ви все одно можете мати можливість 1. відкрити рішення - ігноруйте, що веб-проект не завантажується; 2. додати нульову посилання; 3. використовувати один із згаданих після цього підходів; ви можете вручну редагувати файл проекту або замінити змінну env.VSToolsPath в TeamCity.
Деймон

1
це офіційно випущений пакет MS nuget, чи хтось його просто створив?
Simon_Weaver

чудове рішення - працює для різних версій VS. Мені потрібно було відредагувати .csproj файл, YMMV
Jonno,

39
Це не офіційно випущений пакет Microsoft nuget. Я це знаю, бо створив його.
мак

54

Виходячи з цієї публікації, тут ви можете просто завантажити пакет Microsoft Visual Studio 2010 Shell (інтегрований) для перерозподілу та встановити цілі.

Це дозволяє уникнути необхідності встановлення Visual Studio на сервер збирання.

Я тільки що спробував це зараз і можу перевірити, чи працює він:

Перед:

помилка MSB4019: імпортованого проекту "C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ WebApplications \ Microsoft.WebApplication.targets" не знайдено. Переконайтеся, що шлях у декларації правильний та що файл існує на диску.

Після встановлення:

[Створює правильно]

Це, очевидно, краще рішення, ніж установка Visual Studio на збірному сервері, очевидно.


7
Це найпростіше і найпростіше рішення ІМО. Я використовую VS 2013, і я виявив, що Shell (Ізольована) перерозподільна оболонка Visual Studio 2013 - це те, що працювало (Інтегрований не встановлюється через залежність від Ізольованого).
Метт Міллер

@MatthewSkelton - В чому сенс побудови сервера ?
Мохаммед Замер

2
@BountyMan - сервер збірки - це сервер, який здійснює або контролює побудову програмного забезпечення безперервної інтеграції (CI). Приклади: Дженкінс, TeamCity, CruiseControl тощо
Меттью Скелтон

3
На жаль, з VS v14.0 спосіб встановлення пакету - через nuget, але оскільки моя проблема полягала в тому, що на сервері збірки не було встановлено VS (лише MSBuild), установка пакету виявилася поруч неможливою. Я провів години, посміхаючись з PowerShell та різними напівзахисними установками Nuget, перш ніж просто скопіювати папку з мого ПК на сервер.
pasx

1
@pasx Якщо повідомлення про помилку містить "v14", ви можете замість цього встановити ізольовану оболонку Visual Studio 2015, яка працювала для мене - visualstudioextensibility.com/downloads/vs-shells (у розділі "Завантажити URL-адреси"; обов'язкове опитування, насолоджуйтесь!)
Данк

38

Останній SDK для Windows, як згадувалося вище, на додаток до "Microsoft Visual Studio 2010 Shell (інтегрований) перерозподільний пакет" для Microsoft.WebApplication.targets та "Microsoft Visual Studio Team System 2008, база даних видання GDR R2" для Microsoft.Data.Schema .SqlTasks.targets повинен полегшити необхідність встановлення Visual Studio 2010. Однак установка VS 2010 може бути фактично менш загальною для завантаження та менше роботи в кінцевому рахунку.


FYI - Якщо ви намагаєтеся будувати проекти Sql на сервері збірки без встановлення повнорозмірного VS, вам не пощастить із згаданим тут установщиком бази даних Team System 2008 GDR R2. Попередніми запитами є Visual Studio Team System 2008 Database Edition SP1 (англійською мовою) або Visual Studio Team System 2008 Suite SP1 (англійська мова) та пакет оновлення Visual Studio 2008 1. Схоже, ви можете скопіювати SqlServer.targets з .NET Framework \ Каталог v4 та команда TeamData msbuild націлює файли з \ програмних файлів \ msbuild \ microsoft \ visual studio \ v10.0 \, і ваш csprojs створить.
Етан Дж. Браун

Це, безумовно, не найкрасивіше рішення, але для мене час є найважливішим. Просто копіювання через каталог MSBuild просто призведе до появи моїх проблем.

21
Це дійсно важлива відповідь, тому що якщо ви є незалежним розробником, який налаштовує сервер збірки для клієнта, ви не хочете, щоб клієнт мав підтримувати ліцензію Visual Studio, щоб мати можливість створювати своє програмне забезпечення.
thelsdj

Мені знадобився лише інтегрований пакет оболонки VS2010 та EntLib 5, щоб я міг будувати. Не потрібна командна система.
Робін Уінслоу

1
Оболонка VS 2010 більше не доступна за цим посиланням: "Ресурс, який ви шукаєте, видалено, змінили його ім'я або тимчасово недоступно."
kristianp

22

Додайте залежність через NuGet та встановіть параметр збірки

Мета: зміни / встановлення не потрібні агентам збирання

Тут я застосував гібридний підхід до підходу NuGet від Ллойда , який був заснований на вирішенні Андріком рішення щодо бінарних залежностей.

Причина, чому я хочу мати змогу додавати нові агенти побудови без попереднього конфігурування таких елементів, як ця.

  1. На машині з Visual Studio відкрийте рішення; ігноруйте, що веб-проект не працює.
  2. У менеджер пакунків NuGet додайте MSBuild.Microsoft.VisualStudio.Web.targets , як згадував Ллойд.
  3. Це дозволить вирішити бінарні файли [solution]\packages\MSBuild.Microsoft.VisualStudio.Web.targets.nn.n.n.n\tools\VSToolsPath\
    1. Ви можете скопіювати їх у папку з посиланнями та здійснити
    2. Або просто використовувати їх там, де вони є. Я вибрав це, але пізніше мені доведеться мати справу з номером версії.

У версії 7 я зробив наступне. Це, можливо, не було необхідним, і на основі коментарів зараз точно не потрібно. Будь ласка, дивіться коментарі нижче.

  1. Далі у конфігурацію збірки TeamCity додайте Параметр збірки для env.VSToolsPathта встановіть його у папку VSToolsPath; я використав..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.11.0.2.1\tools\VSToolsPath

8
не потрібно робити крок 4, якщо ви просто заміните елемент <Import> у вашому проектному файлі на цей:<Import Project="..\..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.12.0.1\tools\VSToolsPath\WebApplications\Microsoft.WebApplication.targets" />
knocte

Це має бути прийнята відповідь ... а пункт 4 виключити.
Ізя

@Izzy спасибі, ти зробив коментар, як замість цього вказано knocte? Я не використовував TC кілька років, iirc версії 7.
Деймон

@Damon Я використовую Jenkins, а не TC, тому мені не знадобилося останнього моменту.
Ізя

21

Будуючи на сервері build / CI, вимкніть імпорт Microsoft.WebApplication.targetsвзагалі, вказавши /p:VSToolsPath=''. Це, по суті, зробить умовою наступного рядка помилковим:

<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />


Ось як це робиться в TeamCity:

введіть тут опис зображення


Цілі побудови необхідні, якщо ви використовуєте механізм "Опублікувати" Visual Studio. Це дозволяє компіляції продовжуватися і завершуватися, але це може бути неповним.
starlocke

14

Якщо ви перенесете Visual Studio 2012 на 2013 рік, відкрийте файл * .csproj з редактором.
та перевірте елемент ToolsVersion тегу "Project".

Змініть його значення з 4,0 до 12,0

  • З

    <?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="4.0" ...
  • До

    <?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="12.0" ...

Або Якщо ви будуєте з msbuild, тоді просто вкажіть властивість VisualStudioVersion

msbuild /p:VisualStudioVersion=12.0

Джерело рішення


4
Додавання /p:VisualStudioVersion=12.0 до MSBuild Аргументи у визначенні збірки TFS 2013 (для рішення, створеного у Visual Studio 2013) працювало для мене. Чомусь він шукає файли в папці v11.0 без жодних параметрів.
Sacha K

3
Це рішення працювало для мене, і я використав цю команду:msbuild /p:Platform=x86 /p:VisualStudioVersion=12.0
Е.Мейр

9

Здається, нова версія msbuild не постачається з Microsoft.WebApplication.targets. Для виправлення потрібно оновити файл csproj таким чином:

1) Відредагуйте веб-додаток csproj (клацніть правою кнопкою миші). Знайдіть розділ у csproj внизу щодо інструментів збирання. Це повинно виглядати так.

<PropertyGroup>  
  <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
</PropertyGroup>  
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />  
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />  
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />  

2) Вам потрібно додати один рядок VSToolsPath під тегом VisualStudioVersion, щоб він виглядав так

<PropertyGroup>  
  <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
  <!--Add the below line to fix the project loading in VS 2017 -->
  <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
  <!--End -->
</PropertyGroup>  
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />  
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />  
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />  

Посилання: https://alastaircrabtree.com/cannot-open-vs-2015-web-project-in-vs-2017/


8

Це все, що вам потрібно. Всього 103 Мб. Не встановлюйте все

введіть тут опис зображення


Як я можу поставити галочку на цій формі, не встановлюючи нічого?
Крістіан

5

Я знайшов це на підключенні MS :

Так, для створення проектів баз даних вам потрібно встановити Visual Studio 2010 на машину збирання. Для цього не потрібна додаткова ліцензія Visual Studio.

Отже, це єдиний варіант, який у мене зараз є.


2
Здається, посилання розірвана.
Розчарований

2

Моє рішення - це поєднання кількох відповідей тут.

Я перевірив сервер збірки, і Windows7 / NET4.0 SDK вже встановлений, тому я знайшов шлях:

C: \ програмні файли (x86) \ MSBuild \ Microsoft \ VisualStudio \ v9.0 \ WebApplications \ Microsoft.WebApplication.targets`

Однак у цій лінії:

<Імпортувати проект = "$ (MSBuildExtensionsPath) \ Microsoft \ VisualStudio \ v9.0 \ WebApplications \ Microsoft.WebApplication.targets" />

$ (MSBuildExtensionsPath) розширюється до C: \ Program Files \ MSBuild, у якого немає шляху.

Тому я зробив створення символьної посилання за допомогою цієї команди:

mklink / J "C: \ програмні файли \ MSBuild \ Microsoft \ VisualStudio" "C: \ програмні файли (x86) \ MSBuild \ Microsoft \ VisualStudio"

Таким чином, $ (MSBuildExtensionsPath) розширюється на дійсний шлях, і жодних змін не потрібно в самому додатку, лише на сервері збирання (можливо, можна було б створити симпосилання кожної збірки, щоб переконатися, що цей крок не втрачений і "задокументований" ").


2

Я виправив це, додавши
/p:VCTargetsPath="C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\V120"

в
Build > Build a Visual Studio project or solution using MSBuild > Command Line Arguments


2

Я спробував купу рішень, але врешті-решт ця відповідь спрацювала для мене: https://stackoverflow.com/a/19826448/431522

Це в основному тягне за собою виклик MSBuild з каталогу MSBuild, а не з каталогу Visual Studio.

Я також додав до свого каталогу каталог MSBuild, щоб полегшити кодування скриптів.


2

Усі, хто прийшов сюди на Visual Studio 2017. У мене був подібний випуск, і я не зміг скласти проект після оновлення до 15.6.1. Мені довелося встановити інструменти MSBulild, але все ж помилка була.

Мені вдалося виправити проблему, скопіювавши v14.0папку C:\Program Files (x86)\MSBuild\Microsoft\VisualStudioв ту саму папку, що v15.0і вирішила всі помилки. Отже, структура моєї папки виглядає нижче, де обидві папки містять однаковий вміст.

введіть тут опис зображення


2

Якщо ви використовуєте MSBuild, як у випадку з сервером збірки, для мене працювало:

Змініть наступне:

<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v9.0\WebApplications\Microsoft.WebApplication.targets" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v9.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />

до:

<Import Project="$(MSBuildBinPath)\Microsoft.VisualBasic.targets" />
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />

Моя команда Msbuild: *"C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe" solution.sln /p:Configuration=Debug /p:Platform="Any CPU"*

Сподіваюся, що це комусь допоможе.


щоб згадати, зміни слід внести у файли .csproj, vbproj, які порушують право.
Колін Q

0

Якщо ви намагаєтесь розгорнути проект за допомогою VSTS, проблема може бути пов’язана з перевіркою параметра "Розміщений контейнер Windows" замість "Хостинг VS2017" (або 18 тощо):

введіть тут опис зображення


0
  • Після установки інструментів MSBuild від Microsoft, визначте шлях MSBuild у змінній середовища, щоб він міг запускатися з будь-якого шляху.
  • Відредагуйте .csproj файл у будь-якому редакторі блокнотів, наприклад, блокнот ++, і прокоментуйте його
  • Перевірте такі елементи, ->
    • Переконайтеся, що ви використовуєте імпорт лише один раз, виберіть те, що працює.
    • Переконайтеся, що на диску накопичується така папка: "C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v14.0" або на яку версію посилається ціль MSBuild у "C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ WebApplications \ Microsoft.WebApplication.targets "
    • У командному рядку запустіть таку команду, щоб перевірити

C:> msbuild "C: \\ DotnetCi.sln" / p: Конфігурація = Випуск / p: ВикористовуйтеWPP_CopyWebApplication = true / p: PipelineDependsOnBuild = false


0

У мене виникло це питання, будуючи проект SQL Server на конвеєрі CI / CD. Насправді, у мене це було і локально, і мені не вдалося це вирішити.

Для мене працювало використання SDK MSBuild , здатного виробляти пакет додатків SQL Server Data-Tier ( .dacpac) з набору сценаріїв SQL, що передбачає створення нового проекту. Але я хотів утримати проект SQL Server, щоб я міг зв’язати його з прямою базою даних через провідник об’єктів SQL Server у Visual Studio. Я зробив такі кроки, щоб розпочати це:

  1. Зберігав мій проект SQL Server за допомогою .sqlскриптів бази даних.
  2. Створено проект бібліотеки класів .NET Standard 2.0, переконавшись, що цільовою основою був .NET Standard 2.0, відповідно до вказівок у вищенаведеному посиланні.
  3. Встановіть зміст .csprojнаступним чином:

    <?xml version="1.0" encoding="utf-8"?>
    <Project Sdk="MSBuild.Sdk.SqlProj/1.0.0">
      <PropertyGroup>
        <SqlServerVersion>Sql140</SqlServerVersion>
        <TargetFramework>netstandard2.0</TargetFramework>
      </PropertyGroup>
    </Project>
  4. Я вибрав Sql140 як версію SQL Server, оскільки я використовую SQL Server 2019. Перевірте цю відповідь, щоб дізнатися відображення до версії, яку ви використовуєте.

  5. Ігноруйте проект SQL Server при складанні, щоб він переставав локально ламатись (він створюється на Visual Studio, але він не працює на VS-коді).

  6. Тепер нам .sqlзалишається лише переконатися, що файли знаходяться всередині проекту SDK при його створенні. Я домігся цього за допомогою простого розпорядження повноважень на конвеєрі CI / CD, який копіював би файли з проекту SQL Server у проект SDK:

Копіювати-Пункт-Шлях "Path.To.The.Database.Project \ dbo \ Tables \ *" -Destination (Новий елемент -Назви "dbo \ Tables" -Type Directory -Path "Path.To.The.DatabaseSDK.Project \ ")

PS: Файли повинні бути фізично в проекті SDK, або в корені, або в якійсь папці, тому посилання на .sdkфайли в проекті SQL Server не працюватимуть. Теоретично слід копіювати ці файли з умовою попереднього збирання, але з якихось незрозумілих причин це не працювало для мене. Я намагався також мати .sqlфайли в проекті SDK і пов'язувати їх з проектом SQL Server, але це легко перервало б посилання на провідник об’єктів SQL Server, тому я вирішив також припинити це.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.