2016-07-07 91 views
2

我有一個按照我的project.json文件定位.NET框架的.NET Core項目;如何通過MSBuild獲取.NET Core應用程序的輸出路徑?

"frameworks": { 
    "net461": { 
     "dependencies": { } 
    } 
} 

我試圖找到一種方法,一些(本機)的依賴複製到我的輸出build目錄,但我在努力尋找正確的方法來做到這一點。

當我建立這個項目時,我的輸出轉到bin\Debug\net461\win7-x64。我想知道是否有一種方法來檢索輸出路徑? $(TargetDir)給我我的bin\目錄,但有沒有一個變量來檢索bin\Debug\%FRAMEWORK%\%RUNTIME%

也應該使用project.json腳本通過MSBuild?

編輯 - 2017年5月請參閱下面的答案。總之,這從來沒有得到project.json的支持,但考慮到VS2017中project.json的棄用,這個問題已不再相關。

回答

6

編輯 - 五月2017年

的Visual Studio現在工具已經上升到15版,推出的Visual Studio 2017年本的版本global.json,project.json.xproj已被逐步取消,以支持.csproj項目文件。打開解決方案時,VS2017將提供單向遷移。

在這裏看到遷移文檔: https://docs.microsoft.com/en-us/dotnet/articles/core/migration/

參閱此處兩者之間的比較: https://docs.microsoft.com/en-us/dotnet/articles/core/tools/project-json-to-csproj

+0

這不適用於msbuild – smg

+0

請參閱我的更新後的答案,您應該遷移到基於MSBuild的.NET核心應用程序項目。 – Robula

0

您可以將一個postpublish腳本添加到您的project.json中,您將在其中將本地位複製到%publish:OutputPath%。另一種方法是添加要包含的文件:

"publishOptions": { 
    "include": [ 
    ... 
+0

我需要包括的文件是本機DLL它們是NuGet包(CefSharp)的一部分,我遇到的問題是'dotnet run'和'dotnet publish'完全沒有這些依賴關係,所以我需要將它們包含在某處。總共有50個依賴文件,所以我不想手動輸入全部文件... – Robula

+1

如果包遵循'runtimes/{RID}/*'結構,dotnet發佈只能發佈本地依賴關係(請參閱例如https://www.nuget.org/packages/Libuv/)。由於以前沒有真正的任何與本地庫的包的約定,dotnet不處理它。你可以在includes中使用globbing模式(你也可以使用'mappings',所以如果所有的dll都在一個子文件夾中,這可能只是一個單獨的行(就像''include':['dependencies/**/*。dll ]') – Pawel

相關問題