簡體   English   中英

CMake CSharp 參考 nuget 包

[英]CMake CSharp reference nuget packges

我有一個通過 CMake 配置的 CSharp 項目,但在引用 nuget 包時遇到問題。 我嘗試通過以下方式添加它們:

set_property(TARGET ${PROJECT_NAME} PROPERTY VS_DOTNET_REFERENCES
"../../packages/ExcelDna.Integration.0.34.6/lib/ExcelDna.Integration.dll")

恢復nuget包后,我仍然需要雙擊Visual Studio(2015)中的引用才能成功編譯程序。 此外,是否有一種獨立於版本號的方式來添加對 nuget 包的引用? 以及如何添加某些包(例如 ExcelDna.AddIn)所需的ExtensionTargets

編輯:從 CMake 3.15 開始,CMake 支持使用VS_PACKAGE_REFERENCES引用 Nuget 包。 與手動恢復 Nuget 包並在 CMake 中硬編碼包路徑相比,這是一種更簡潔的解決方案。 VS_PACKAGE_REFERENCES目標屬性現在為您處理所有這些開銷。

要將 Nuget 包引用添加到 CMake 目標,請使用由下划線_分隔的包名稱和包版本,如下所示:

set_property(TARGET ${PROJECT_NAME}
    PROPERTY VS_PACKAGE_REFERENCES "ExcelDna.Integration_0.34.6"
)

您可以使用*獲取范圍內的任何版本號,並使用分號附加多個包:

set_property(TARGET ${PROJECT_NAME}
    PROPERTY VS_PACKAGE_REFERENCES "ExcelDna.Integration_0.34.*;ExcelDna.AddIn_1.0.0"
)

您可以使用VS_DOTNET_REFERENCE_<YourLibrary>讓 CMake 找到您的 Nuget 包引用。 嘗試這個:

set_property(TARGET ${PROJECT_NAME} PROPERTY 
    VS_DOTNET_REFERENCE_ExcelDna.Integration 
    ${CMAKE_BINARY_DIR}/packages/ExcelDna.Integration.0.34.6/lib/ExcelDna.Integration.dll
)

請注意,完整的 DLL 名稱必須附加到VS_DOTNET_REFERENCE_指令以創建完整變量。 但是,我還沒有看到加載 Nuget 包的獨立於版本號的方式,我不得不手動編輯我的 CMake 文件以包含這些包。 您可以查看此答案以獲得更詳細的解釋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM