Я впервые использую CMake для создания C # DLL. Этот CMake вписывается в больший рабочий процесс. В противном случае я использую Visual Studio 2017 для разработки и отладки.
Пока что мой CMakeLists.txt выглядит примерно так: продукт просмотра, вырезания и вставки из нескольких примеров, которые я смог найти.
cmake_minimum_required(VERSION 3.8)
project("galapagos" CSharp)
add_executable("galapagos"
tortoise1.cs
tortoise2.cs
tortoiseForm.cs
packages.config
runTortoiseReport.cs
... etc ...
tortoiseTest.cs)
set_property(TARGET "galapagos" PROPERTY DOTNET_TARGET_FRAMEWORK_VERSION "v4.6.1")
set_property(TARGET "galapagos" PROPERTY WIN32_EXECUTABLE FALSE)
set_property(TARGET "galapagos" PROPERTY VS_CONFIGURATION_TYPE ClassLibrary)
set_property(TARGET "galapagos" PROPERTY VS_DOTNET_REFERENCES
"Microsoft.CSharp"
"PresentationCore"
"PresentationFramework"
"System"
"System.Core"
"System.Data"
"System.Data.DataSetExtensions"
"System.Windows.Forms"
"System.Net.Http"
"System.Xaml"
"System.Xml"
"System.Xml.Linq"
"WindowsBase"
.. etc ...
"C:/galapagos/galapagos.dll"
)
Далее, попытка построить приводит к изменениям в моем файле .csprog, где
- форма исчезает с соответствующими ошибками сборки из формы №
дольше присутствует
- тип вывода изменяется с
Class Library
на
Console Application
Исчезающую форму иногда можно заставить снова появиться, исключив соответствующий файл из проекта, а затем добавив его снова.
DLL не создается. Изменение файла .csprog, где приложение теперь является Console Application
, в лучшем случае странное.
По-видимому,
set_property(TARGET "galapagos" PROPERTY VS_CONFIGURATION_TYPE BeefChowMein)
имеет тот же эффект, что и
set_property(TARGET "galapagos" PROPERTY VS_CONFIGURATION_TYPE ClassLibrary)
, что, возможно, объясняет, что ClassLibrary
не понимается CMake и считается значением по умолчанию ConsoleApplication
.
Поскольку процесс сборки, очевидно, потерял определение формы, у меня теперь есть целый ряд ошибок, таких как
tortoise1.cs(16,25): error CS1061: 'TortoiseForm' does not contain a definition for 'carapace' and no accessible
extension method 'carapace' accepting a first argument of type 'TortoiseForm' could be found (are you missing a using directive or an assembly reference?) [......csproj]
где проект иначе построен правильно за VS секунд до.
Есть ли проблемы сосуществования с VS и CMake?
Что мне все еще не хватает?