问题
tl;dr: How to modify the .csproj
file during publishing with ClickOnce
while executing pre-build events?
Long: I'm using TFS hosted by Microsoft for version control of my solution.
When publishing with ClickOnce
, I get the latest revision number + 1 without problems. I also can successfully write the new version number into the .csproj
file outside my build-process.
The problem is, that the .csproj
file doesn't get updated during the build process - it might be in a write-lock. I get a notification inside Notepad++ about the modification of the file, but the file still contains the old version and VS didn't notice any changes.
The only solution by now I found to resolve this issue: Move the revision update into the post-build events and add 2 instead of one to the actual revision number. Unfortunately this would cause that revision number would be out of date whenever other developers check-in code.
回答1:
Ok, strike that... :(.
After some more diffing, you'll need to override the GenerateApplicationManifest target to get this to work. That target doesn't use a *DependsUpon
propertygroup, so it's harder to overwrite. The whole flow is defined in the Microsoft.Common.Targets
file which you can find in the %windir%\Microsoft.NET\Framework{cpu}\{version} folder
.
See also:
- http://social.msdn.microsoft.com/Forums/vstudio/en-US/3a94df52-74c1-4fca-a830-ab530ec49207/use-msbuild-to-create-clickonce-app-files-in-alternate-location
来源:https://stackoverflow.com/questions/17726525/modify-csproj-in-pre-build-event