В CMake, как установить внешние ссылки проекта C # на конкретные версии? - PullRequest
1 голос
/ 20 октября 2019

Я использую Visual Studio 2017 и CMake 3.15.4 для проекта формы C # / Windows, который требует нескольких внешних ссылок. Я настроил их следующим образом:

set_property(TARGET my_exe PROPERTY VS_DOTNET_REFERENCES
    ${dependency_1}
    ${dependency_2}
    ${dependency_3})

set_property(TARGET my_exe PROPERTY VS_DOTNET_REFERENCE_${dependency_1}
    "path_to_dependency_1")

...

Я заметил, что в меню Свойства каждой зависимости свойство Определенная версия всегда установлено на False по умолчанию. Мне интересно, как я мог установить его в True в сценарии CMake, чтобы цель использовала определенную версию зависимостей. Спасибо за любой указатель.

1 Ответ

1 голос
/ 21 октября 2019

Документация для VS_DOTNET_REFERENCE_<refname> здесь не упоминает версию. Но, хотя это официально не поддерживается CMake, можно установить свойство ссылки SpecificVersion равным True.

Отличный ответ здесь , документирующий ситуации, в которых будет проверяться конкретная версия. На проверку влияют наличие информации о версии в ссылке на сборку и наличие элемента <SpecificVersion> . См. Таблицу, воспроизводимую здесь:

                            |     Version information
                            |  Present       Not present
----------------------------+------------------------------
<SpecificVersion>           |
- Present, has value True   |    Yes (1)        Yes (check always fails) (2)
- Present, has value False  |    No  (3)        No (4)
- Not present               |    Yes (5)        No (6)

Поскольку генераторы CMake Visual Studio не предоставляют механизма (пока) для установки ссылочного свойства <SpecificVersion>, мы должны принудительно проверить конкретную версию, вставив версиюинформация вместе с именем ссылки (случай 5 в таблице выше). Попробуйте что-то вроде этого:

set_property(TARGET my_exe PROPERTY 
    "VS_DOTNET_REFERENCE_Dependency1, Version=2.1.1"
    "path_to_dependency_1"
)

Это установит версию на 2.1.1, а свойство ссылки Определенная версия будет установлено на True вместо значения по умолчанию:False.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...