[英]VS Post Build Event
我想實現一個執行以下操作的構建后事件
這是怎么做到的?
你想要那嗎?
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。 這是我們在工作中使用的。
對於問題中的第2步,我似乎更喜歡以下內容:
"C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\gacutil" /f /i $(TargetPath)
注意:這需要在開發計算機上安裝Windows SDK 。
陷入相關問題。 這里的答案有幫助(謝謝!)。
我的方案是調試一個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.