Comments (14)
I am debugging this , it's very annoying on the solution FSharp
I'll try to fix it, assign it to me
from fsharp.
@enricosada thanks for taking this. You just need to update here with well-known item capability similar to here.
from fsharp.
It's yours, assigning to myself until we have the ability to assign outside of Microsoft org.
from fsharp.
i cannot repro.
tried with latest ( master branch ) with ad hoc solution and fsharp.sln .
The up-to-date is correct.
I was trying to fix fsharp solution useless rebuild, but this seem ok.
i tried to:
- change generated app.config -> up-to-date
- change original app.config -> up-to-date
- use a Content "file.txt" (with CopyNever, CopyIfNewer, CopyAlways) -> ok
from fsharp.
@enricosada What do you mean when you say 'up-to-date'?
Expected behavior:
- Original app.config changed -> causes rebuild of project
- Generated app.config changed -> no rebuild
- "file.txt" changed -> Rebuild for CopyIfNewer, CopyAlways
from fsharp.
thx @rojepp i'll try your test case
from fsharp.
ok i can repro now, thx
- open solution
- build -> build success
- build -> up to date
- change original app.config
- build -> build success
- build -> build success ( ❗ expected up to date )
from fsharp.
@latkin contributed a fix for that, and I verified it in 3.1.2, so I'm surprised by that.
The remainder of the issue was that generated app.config wasn't considered an output of the build, meaning if generated app.config is older than original app.config it wouldn't cause a rebuild.
If you're going to be working on this, I have to say this registry tip is invaluable: What causes a rebuild in MSBuild
from fsharp.
@enricosada That tip will show files in input and output buckets with their modified times. AFAIR generated app.config is in the wrong bucket (input instead of output) causing strange rebuilds.
from fsharp.
The issue from codeplex above is truncated, and the original issue is gone.
from fsharp.
really thx @rojepp i'll add the registry tip to the wiki, is very nice to know
from fsharp.
Yes, F# impl looks at reg key @rojepp mentioned, and logs info to the output window about the files it's looking at and their timestamps. This is the first step to debugging.
Behavior today should be as follows (and I added tests for this, so if it's not working, it needs to be investigated). Assuming everything is built fresh and up-to-date:
- ✅ Modifying
app.config
source does trigger dirty state and causes rebuild.- This was originally not working, and that's what this bug was opened for. I fixed it.
- ❌ Modifying
myapp.exe.config
output file does not trigger dirty state, will still report "up-to-date"- @rojepp noticed this was still not working, so we are looking at it now
Note: C# proj sys has same behavior as us for No. 2 (and always has), so it's not a big deal if we don't fix this.
Thinking about it, it might be tricky. Even if we declare the project dirty and MSBuild runs, I'm not sure that MSBuild is smart enough to re-create the myapp.exe.config
file. @enricosada you will have to poke around a bit.
from fsharp.
AFAIR generated app.config is in the wrong bucket (input instead of output) causing strange rebuilds.
Generated myapp.exe.config
is not in any bucket, it's not tracked at all right now, that's the problem. Source app.config
is (now) in proper Input bucket.
from fsharp.
an update, working on it (i need to end the other pr before this one).
I am trying to fix without a special case on app.config
the rules are msdn Incremental Builds and msdn How to: Build Incrementally
an useful item metadata list and project properties
the input, output can be inferred by OriginalItemSpec and FinalOutputPath metadata
the build output group are:
- Built
- ContentFiles
- LocalizedResourceDlls
- Documentation-
- Symbols
- SourceFiles
- XmlSerializer
for example:
app.config
OriginalItemSpec
= "App.config"FinalOutputPath
= "C:\path\to\project\bin\Debug\ConsoleApplication1.exe"
.pdb (Symbols)
FinalOutputPath
= "C:\path\to\project\bin\Debug\ConsoleApplication1.pdb"
but no OriginalItemSpec, so need check with all source files
Content items
CopyToOutputDirectory
= "PreserveNewest"TargetPath
= "readme.txt"
so this group need a special case i think, but as group no single item
from fsharp.
Related Issues (20)
- Change compiler default setting for compressedMetada HOT 1
- Trimmability and compiler optimization regression in FSharp.Core.dll with .NET 8.0.300 SDK HOT 5
- Change compiler default setting realsig+ when building assemblies HOT 1
- Precision loss in %f formatting HOT 6
- Nullness feature request - enable nullness checking in .fsx scripts
- Nullness issue - show C# nullness attributes in tooltips
- Nullness issue - support direct <Nullable>enable</Nullable> flag instead of <OtherOptions>
- `main` plain builds are failing HOT 2
- Valid type alias with anonymous record report error
- Nullness feature request- parser recovery for ` null | ..`
- Nullness issue - add contextual information into nullness mismatches
- Nullness bug - duplicate warning for the same range
- Good service
- SO in non-recursive bindings checks
- Floats inconsistency HOT 4
- Nullness issue - matching null with an int must be an error, not just a warning
- [Visual studio] Nullness - GUI in property pages for a project to turn nullness checking on/off HOT 1
- Type of second field in nested update lacks highlighting
- Better diagnostics for mixing different nullness pattern matching ways
- Better diagnostics for nullness inference related errors HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from fsharp.