C
C#8mo ago
Exi

✅ .NET7 Hotfix via DDL

Hey, I've following situation and question: Currently there is a external software in use and sometimes it got some hotfixes and those got delivered by DLLs. Those just got added to the version and it worked. Now they migrated the software to .NET7 and only deliver the hotfix as whole softwarepackage and not only the DLL. reasoning: the versioncontroll (assembly integrity I assume? they called it versioncontroll) of .net 7 is higher than before and you cant just add new dlls. Is there any workarround or is that just how it is? Maybe anyone can give me some information about that topic and insights (or helpful links where I can read more about that) Thanks
44 Replies
JakenVeina
JakenVeina8mo ago
and those got delivered by DDLs
define this
Exi
Exi8mo ago
they just provided a few DLL files which included the hotfix which got added into the projectfolder and that's it ^^
JakenVeina
JakenVeina8mo ago
"added into the projectfolder" how?
Exi
Exi8mo ago
copy the file from the provider -> windows explorer -> path of the program/project -> paste xD of course that method didnt work for all kind of fixes, but for some smaller stuff ^^ just curious if there is a way to add smth to an compiled + released project in .net7 now without getting the error that the integrity isnt given any more, because the files doesnt match (this stuff to secure from corrupted/manipulated files)
JakenVeina
JakenVeina8mo ago
did this replace an existing DLL?
Exi
Exi8mo ago
good question, can't answer that right now just started here and never did this process by myself
JakenVeina
JakenVeina8mo ago
I mean like when they gave you a new DLL for these hotfixes did this new DLL replace an existing one each time?
Exi
Exi8mo ago
i didnt add the new dlls and dont know if it asked to replace an existing one :D thats what I meant ^^
JakenVeina
JakenVeina8mo ago
point being if that WASN'T the case, then I haven't a damn clue what nonsense system they had implemented if that WAS the case, then how is that any different than the new type of delivery? bottom line, really, I guess, yes, what you describe for their "new" delivery system is entirely what it should be if your processes can't accommodate, you need to change your processes third party delivers you a package of files, in theory mostly DLLs, and it's your job to deploy them, or properly incorporate them into your own build
Exi
Exi8mo ago
ye I agree with you on that one it just became a topic because the software we get isnt really well tested because the company has no really quality insurance. because of that a lot of bugs accure frequently with new patches/versions. further we have really strict regulantions by law because of our sector and we have to proof of the functionallity. that means we are basically forced to test many cases for the software after every change. because of that they always delivered those "small hotfixes" in dlls to avoid that step and just test a small part. now everyone is "worried" because of that much more hours of work into that ^^ just for some context^^
JakenVeina
JakenVeina8mo ago
sure
Exi
Exi8mo ago
I also thought about adding a UI/GUI Test to save the hours on our side, but the higher ups aint sure if thats smth we should do or the software company (but they wont :D )
JakenVeina
JakenVeina8mo ago
I can definitely relate, we have something similar with our release schedule at work we have to label everything as "minor" releases, because a "major" release requires a lot more red tape you absolutely should find a way to automate whatever testing you're responsible for as much as you can
Exi
Exi8mo ago
their software is a WPF Client - I wasnt sure whats the best way to test that from user perspective I have no access to the source code and not sure If I can even get the fieldcontrol for some input and validation, u have any expierience on that?
JakenVeina
JakenVeina8mo ago
in a perfect world, a WPF application is implemented with an MVVM architecture, allowing a perfect top-level seam for testing, without having to actually run any of the GUI code somethings tells me that's not the case here so you're responsible for testing a third-party GUI application?
Exi
Exi8mo ago
ye ...^^
JakenVeina
JakenVeina8mo ago
and not responsible for its development?
Exi
Exi8mo ago
ye
JakenVeina
JakenVeina8mo ago
how bizarre and you're responsible for the backend of this same app?
Exi
Exi8mo ago
by backend u mean the database and stuff?
JakenVeina
JakenVeina8mo ago
yeah
Exi
Exi8mo ago
yeh
JakenVeina
JakenVeina8mo ago
I guess that's not TOO crazy, you've basically just farmed-out the GUI to a third party this very much seems like an administrative problem obviously, you're responsible for certain functionality and testing, per contract those requirements related to the GUI that's being externally developed ought to also be offloaded onto the external party but it sounds like their contract wasn't written that way
Exi
Exi8mo ago
from what I've heared there are always a lot of discussions and promises about that, but didnt change in years not to much into that since I'm new here and trying to figure out some stuff, thats only one small part ^^
JakenVeina
JakenVeina8mo ago
ultimately, I don't think there's any way you're going to get a meaningful answer here, there's too much context
Exi
Exi8mo ago
yee but my curiousity is happy now
JakenVeina
JakenVeina8mo ago
sorry
Exi
Exi8mo ago
and I can close that chapter (deliver dlls) for myself nah its fine maybe need to check out some stuff about testing if u say WPF could be tested easy
JakenVeina
JakenVeina8mo ago
it OUGHT to be source code or not
Exi
Exi8mo ago
if correctly implemented with that architecture
JakenVeina
JakenVeina8mo ago
I mean, it's still not a TRUE test so, like to paint a brief picture
public class MyViewModel
{
public string DataValue { get; set; }

public ICommand SaveCommand { get; }
}
public class MyViewModel
{
public string DataValue { get; set; }

public ICommand SaveCommand { get; }
}
<UserControl x:Class="MyView">
<StackPanel>
<TextBox Text="{Binding DataValue}" />
<Button Command="{Binding SaveCommand}" Content="Save" />
</StackPanel>
</UserControl>
<UserControl x:Class="MyView">
<StackPanel>
<TextBox Text="{Binding DataValue}" />
<Button Command="{Binding SaveCommand}" Content="Save" />
</StackPanel>
</UserControl>
this is roughly what an MVVM architecture would look like business logic is written in the ViewModel layer View layer consumes it to decide how to "visualize" things you can't really test the View layer without actually putting it on a screen and clicking around, but you can fully-automate testing of the VM layer
Exi
Exi8mo ago
i doubt its like that :D
JakenVeina
JakenVeina8mo ago
public MyViewModelTests
{
<TestCase(null)>
<TestCase("")>
public void SaveCommand_DataValueIsInvalid_CannotExecute(string? dataValue)
{
var uut = new MyViewModel();

uut.DataValue = dataValue;

uut.SaveCommand.CanExecute(null).ShouldBeFalse();
}

<TestCase("Test Data")>
public void SaveCommand_DataValueIsValid_SavesDataValue(string? dataValue)
{
var uut = new MyViewModel();

uut.DataValue = null;

uut.SaveCommand.CanExecute(null).ShouldBeTrue();
uut.SaveCommand.Execute(null);

Database.GetDataValue().ShouldBe(dataValue);
}
public MyViewModelTests
{
<TestCase(null)>
<TestCase("")>
public void SaveCommand_DataValueIsInvalid_CannotExecute(string? dataValue)
{
var uut = new MyViewModel();

uut.DataValue = dataValue;

uut.SaveCommand.CanExecute(null).ShouldBeFalse();
}

<TestCase("Test Data")>
public void SaveCommand_DataValueIsValid_SavesDataValue(string? dataValue)
{
var uut = new MyViewModel();

uut.DataValue = null;

uut.SaveCommand.CanExecute(null).ShouldBeTrue();
uut.SaveCommand.Execute(null);

Database.GetDataValue().ShouldBe(dataValue);
}
Exi
Exi8mo ago
but I need to have access to the sourcecode then
JakenVeina
JakenVeina8mo ago
not at all
Exi
Exi8mo ago
oh really
JakenVeina
JakenVeina8mo ago
you have the DLL, don't you?
Exi
Exi8mo ago
ye
JakenVeina
JakenVeina8mo ago
the only thing you'd NEED is for MyViewModel to be public
Exi
Exi8mo ago
if I understood that correctly some classes/models need to be public for me to access them in my testcode and then i simulate some actions like in your code, setting values and button interaction how are those tests running?
JakenVeina
JakenVeina8mo ago
however you like
Exi
Exi8mo ago
they also added some business logic into their test cases, like : if field A has value xyz field Z has to be readonly is that working with your way? button clicks, uploads, check if readonly, checking if saving is working properly and stuff
JakenVeina
JakenVeina8mo ago
uhhh, yeah, that's pretty much what I was describing I dunno about "check if readonly"
Exi
Exi8mo ago
alr, I'll dive into that and check that out ^^ time for another quick question? its about project strucutre structure*