簡體   English   中英

VS 構建后事件

[英]VS Post Build Event

我想實現一個執行以下操作的構建后事件

  1. DLL output 的相對路徑副本(1 個文件,不是所有的調試爵士樂)
  2. 將 output DLL 注冊到 GAC

這是怎么做到的?

你想要那嗎?

copy $(TargetPath) $(TargetDir)..\..\someFolder\myoutput.dll
regasm $(TargetPath) 

(進入項目屬性下的后期構建步驟的字段)

在“項目屬性 - >構建事件 - >后期構建事件命令行”中輸入以下內容:

xcopy "$(TargetPath)" "target path" /Y && regasm "$(TargetPath)"

或者將以下代碼段添加到項目(例如csproj)文件中

<PropertyGroup>
    <PostBuildEvent>xcopy "$(TargetPath)" "target path" /Y && regasm "$(TargetPath)"</PostBuildEvent>
</PropertyGroup>

請注意,建議在復制命令參數周圍添加“”以避免包含空格的路徑出現問題。 另請注意,可以使用&&組合多個命令

您確定要在編譯過程中執行此操作嗎? 如果可以避免,我建議在解決方案而不是GAC中使用項目引用。 復制文件是一回事,但在GAC中注冊是相當具有侵入性的,您可能需要考慮編譯代碼的其他環境。像其他開發人員的機器,測試環境/構建服務器等等。如果您有構建服務器你真的應該使用NAnt這樣的東西和某種持續集成服務器。

我不得不遇到同樣的問題而且我努力工作以使其有效。

在我的情況下,我想做另一種方法是將SDL dll復制到我的輸出文件夾中。

copy "$(SolutionDir)SDL\lib\x86\SDL.dll" "$(SolutionDir)$(Configuration)\"

請注意, $(Configuration)將是您的輸出文件夾(例如Debug或Release)。

引號是我所遺漏的,顯然你需要它們,當右手邊有一個\\ 因此,總是使用它們可能更安全。

希望能在5分鍾內拯救別人!

PS我使用Visual Studio 2010

你可能想看看MS Build。 這是我們在工作中使用的。

CodeProject鏈接MSDN參考

對於問題中的第2步,我似乎更喜歡以下內容:

"C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\gacutil" /f /i $(TargetPath)

注意:這需要在開發計算機上安裝Windows SDK

有關可用宏的更多信息,例如MSDN上的$(TargetPath)。

陷入相關問題。 這里的答案有幫助(謝謝!)。

我的方案是調試一個MEF依賴的應用程序,我需要在特定的位置有相關的DLL。 我遇到了覆蓋先前構建的問題,因此需要在腳本中添加刪除。

delete $(SolutionDir)FileService\$(ProjectName).dll
copy $(TargetPath) $(SolutionDir)FileService\$(ProjectName).dll

希望能幫助別人!

這個問題很老了。 最簡單的方法是在 your.csproj 文件中添加類似的內容。 例如,我正在虛擬機上運行一些測試,並且很高興在編譯后將其發送給它:


<Project>
    ...
     <!-- Upload to virtual machine -->
    <Target Name="rsync" AfterTargets="Build">
        <Exec Command="C:\Windows\System32\wsl.exe rsync -azv -e 'ssh -i /path/to/my/private/key' --delete  /mnt/c/repos/MyProject/bin/Debug/net7.0/ root@vm.ublux.com:/usr/share/foo/" />
    </Target>
</Project>

暫無
暫無

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

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