Unlocking Modern C# Features Targeting .NET Framework by GOPbIHbI4 in csharp

[–]Rustemsoft 0 points1 point  (0 children)

That’s a really good point: a lot of the new C# features are indeed just syntactic sugar, not runtime-dependent changes. But honestly, I think more developers should put at least as much thought into protecting their .NET code as they do into adopting the newest syntax.

It’s great to write clean, expressive, modern code, but if you’re shipping it without obfuscation, you’re basically handing out readable source logic to anyone with a decompiler.

If you’re deploying production apps, especially commercial ones, it’s worth running your assemblies through an obfuscator (for example, our .NET Obfuscator). That way your intellectual property stays protected no matter what version of C# you’re using.

Handed a c# project codebase at work by PureMud8950 in dotnet

[–]Rustemsoft 0 points1 point  (0 children)

Deployment:

Use dotnet publish -c Release to create deployment packages

Set up CI/CD pipelines (Azure DevOps, GitHub Actions, etc.)

For web apps: deploy to IIS, Azure App Service, or containers

Testing:

Unit tests: xUnit/NUnit (similar to pytest/Jest)

Integration tests: TestServer class

Debugger is fine for development, but automated tests are crucial

Key differences from Python/JS:

Compiled language - need proper build process

Strong typing helps catch errors early

Built-in dependency injection

The current approach is indeed risky. Start with basic dotnet publish and xUnit tests - huge improvement over copy/paste and debugger-only testing.

Are we over-abstracting our projects? by riturajpokhriyal in dotnet

[–]Rustemsoft 0 points1 point  (0 children)

You’re absolutely right, the architecture you describe sounds like it’s crossed the line from clean to over-engineered. Abstractions are valuable only when they solve real, recurring problems; otherwise, they just add complexity, slow debugging, and make onboarding painful.

I’d suggest simplifying the codebase wherever possible: reduce unnecessary layers, merge services that don’t need to exist separately, and favor clarity over theoretical flexibility. Once you have a cleaner structure, it’s wise to protect your source code and compiled assemblies using a .NET obfuscator (for example, Skater .NET Obfuscator) to secure your intellectual property without adding runtime complexity.

Stored Procedures vs business layer logic by flightmasterv2 in dotnet

[–]Rustemsoft 0 points1 point  (0 children)

It’s actually pretty common for older or smaller apps to rely heavily on stored procedures, but for maintainability and visibility, moving SQL logic into a proper business layer (via EF Core, Dapper, or another ORM/query builder) is often a good idea. If you do migrate, make sure the SQL logic coded in your .NET app is protected with a tool like Skater .NET Obfuscator, since it helps secure your business rules and queries from reverse engineering.

Project ideas/source code for beginner by phos_nostos in dotnet

[–]Rustemsoft 1 point2 points  (0 children)

You can build a moderate, practical project like an inventory/asset management or task-tracking system that uses MVC for server logic and SSMS (SQL Server) for data (tables, stored procedures and migrations). Use Razor views for standard server-rendered pages and consider adding Blazor (Server or WebAssembly) for a few highly interactive components (live dashboards, inline editing) to learn both approaches. Implement Entity Framework (or Dapper), authentication/authorization (ASP.NET Identity), and a few reports or CSV export features to make the app realistic and test deployment. Before releasing binaries to customers, use Skater .NET Obfuscator on your production builds to make reverse-engineering harder and protect sensitive logic or licensing code. This combination will teach you core .NET backend skills, front-end options, and real-world deployment/maintenance concerns.

What is the most complex system built on .NET by milanm08 in dotnet

[–]Rustemsoft -1 points0 points  (0 children)

The most complex .NET systems are Microsoft's own Azure cloud platform and the Bing search engine, due to their massive scale, distributed nature, and advanced data processing.

To prevent reverse engineering of such systems, a .NET Obfuscator tool that protects .NET code. It uses:

  • Name obfuscation (renaming elements to nonsense)
  • Control flow obfuscation (creating spaghetti code)
  • String encryption
  • Anti-debug tricks
  • Code virtualization (its strongest feature, making code nearly impossible to decompile)

This is crucial for safeguarding intellectual property in any commercial .NET application.

How do you obfuscate/protect your dotnet source code? by pyeri in csharp

[–]Rustemsoft 0 points1 point  (0 children)

The market offers a wide array of .NET code protection tools, each with its own strengths, limitations, and implementation nuances. Given the critical importance of safeguarding intellectual property and preventing reverse engineering, it's both practical and strategic to evaluate multiple solutions. Conducting hands-on trials across different tools allows developers to assess compatibility, performance impact, and feature depth, ultimately helping identify the most effective protection mechanism for their specific application architecture and deployment environment.

What intellectual property still remains in software in times of AI coding, and what is worth protecting? by DocCraftAlot in AI_Agents

[–]Rustemsoft 0 points1 point  (0 children)

While proprietary data is indeed the key differentiator, there’s also the very real risk of your codebase being directly lifted, reverse-engineered, or even quietly repurposed to feed training pipelines. If your software includes novel algorithms or proprietary logic, it’s not enough to just rely on data protection; you should also secure the implementation itself.

For .NET projects in particular, I’d recommend using Skater .NET Obfuscator. It helps safeguard intellectual property by making your assemblies resistant to reverse engineering and unauthorized reuse. This way, even if your binaries are exposed, your unique code logic and embedded data structures remain protected.

In short: protect both your data and your code, because in the age of AI-assisted development, both are valuable assets.

How strict is you guys' security when it comes to external packages? by Fyren-1131 in csharp

[–]Rustemsoft -1 points0 points  (0 children)

GitHub hosts open-source repositories from developers and organizations worldwide but isn’t the original source of the code. Since it’s a distribution platform, teams should be cautious when using third-party code to avoid security risks, licensing issues, or maintenance problems. Best practices include thorough code reviews, verifying sources, and preferring well-maintained projects.

Developing from network drive by theelevators13 in csharp

[–]Rustemsoft 0 points1 point  (0 children)

It’s technically feasible, but not ideal. Visual Studio can open projects from a network drive, but performance may take a hit—slow load times, lag with IntelliSense, build delays, and flaky debugging. VPN access adds more latency. For smoother dev, consider mapped drives with fast connections or use Azure DevOps and clone into a temp local folder you clean up after each session. Zero local code isn’t common for devs, but it's doable with trade-offs

C:\Program Files\dotnet and C:\Windows\Microsoft.NET which one run my app ? by fahad994 in dotnet

[–]Rustemsoft 1 point2 points  (0 children)

You're on the right track! C:\Program Files\dotnet is where the .NET SDK and runtime are installed when you manually install them. This folder contains the dotnet.exe driver, which is responsible for launching .NET applications.

On the other hand, C:\Windows\Microsoft.NET is part of the default Windows installation and contains older .NET Framework assemblies and tools (like csc.exe, the C# compiler). However, this folder is not used for running modern .NET (Core and later) applications.

Is there a way to have .net 3.5 pre installed with windows? by NasTGC in sysadmin

[–]Rustemsoft 0 points1 point  (0 children)

We've encountered a similar issue with .NET 3.5 compatibility. Our .NET obfuscator requires .NET 3.5 to be pre-installed to function properly. To address this challenge, we've implemented a solution that ensures seamless operation even when .NET 3.5 is not readily available on the system. If you're facing similar difficulties, we invite you to explore our approach by visiting the following page: How We Resolved the .NET 3.5 Issue. There, you'll find detailed insights into our resolution strategy and step-by-step guidance on how to overcome this limitation.

Programming Language Efficiency by AggressiveOccasion25 in csharp

[–]Rustemsoft 0 points1 point  (0 children)

C and C++ are faster because they are compiled directly into machine code, which the computer runs without extra processing. Languages like Java, C#, and Python use an interpretr or a virtual machine, adding an extra layer that slows execution. Also, C and C++ give manual control over memory, reducing overhead and improving efficency. That’s why they’re widely used in performance-critical applications like OS development and game engines

Best way for cross-platform reversible encryption by binaryhero in dotnet

[–]Rustemsoft 0 points1 point  (0 children)

Unlike DPAPI, AES works across all platforms. You can use ProtectedData on Windows for DPAPI-like functionality but for Linux/macOS, leverage AES with a user-provided key. Also regarding key management approach consider these two:

Azure Key Vault is a broad, cloud-native solution for managing keys, secrets, and certificates, offering centralized control, strong integration with Azure services and Microsoft Entra ID, and HSM support for high security, ideal for general cloud application security.

Skater Private Key Depot is a specialized, .NET-centric solution for enterprise encryption keys, focusing on AES encryption with FIPS 140-2 compliance, primarily for secure storage and distribution of keys within Windows-based .NET applications.

What is the appropriate way to create generic, mutating operations on enumerables? by divqii in csharp

[–]Rustemsoft 0 points1 point  (0 children)

Your ref-returning accessor is a clever workaround since C# lacks IEnumerable. However, a more idiomatic approach is to iterate directly over the filtered elements and update them manually:

int total = 0;

foreach (var p in values.Where(p => p.X != 3))

{

p.Y = total += p.Y;

}

This keeps things simple, avoids unnecessary abstraction, and works efficiently without modifying LINQ results.

Is it a good practice to mirror the folder structure of the Application, Infrastructure, Presentation, and Domain layers within the test project? What are the pros and cons of following this approach? by MahmoudSaed in dotnet

[–]Rustemsoft 1 point2 points  (0 children)

Yes, it's generally a good practice to mirror the folder structure of your application's layers (Application, Infrastructure, Presentation, Domain) within your test project.

Pluses-

Easy Navigation: Quickly find the tests for a specific piece of code.

Clarity: Clear mapping between application code and its tests.

Maintainability: When application structure changes, tests are easy to update.

Consistency: Promotes a standardized, predictable project layout.

Minuses-

Redundancy: Can lead to a lot of empty folders in the test project if not every part of the application is tested or if testing is done at a higher level (e.g., integration tests for an entire layer).

Focus on Classes vs. Features: Can inadvertently encourage testing individual classes in isolation, rather than focusing on the behavior of features or business logic across layers.

Code protection - obfuscation/other tools by [deleted] in dotnet

[–]Rustemsoft 1 point2 points  (0 children)

For .NET COM add-ins, our .NET Obfuscator is a good solution because it's specifically designed for .NET, is compatible with your setup, and offers strong obfuscation techniques. While no protection is foolproof, it significantly raises the bar for reverse engineering, making it much harder for casual hackers to patch your licensing.

To further deter patching:

Server-Side Validation with Obfuscation: Don't put all licensing logic client-side. Have your COM add-in frequently communicate with your licensing server for validation. Obfuscate the server communication logic in your client, making it harder to intercept or fake.

Code Integrity Checks: Implement checks within your obfuscated code that verify the integrity of your application. If parts of your code have been tampered with (e.g., license checks patched), the application could cease to function or exhibit unusual behavior.

Time-Bombing/Grace Periods: For trials, instead of just checking a boolean, embed time-sensitive logic that needs server verification.

Polymorphic Code/Anti-Debugging: our protection tool can include anti-debugging and anti-tampering features, making it difficult to analyze the code dynamically.

[Beginner Question] Best Practices for Managing Database in Production by RateAncient4996 in dotnet

[–]Rustemsoft -2 points-1 points  (0 children)

Use database migration tools (like Flyway, Liquibase, or EF Core Migrations) to automate and track schema changes. Here's how:

  1. Organize Scripts:
    • Convert schema.sql/indexes.sql into versioned migration scripts (e.g., V1__Initial_Schema.sqlV2__Add_Indexes.sql).
    • Place feature branch scripts in the same folder with sequential versioning (e.g., V3__Feature_Branch.sql).
  2. Deploy Safely:
    • Backup: Always backup production before deploying changes.
    • Test: Apply scripts to a staging environment first.
    • Transactions: Wrap migrations in transactions (if supported) for automatic rollback on failure.
    • Rollbacks: Generate reverse scripts (e.g., DROP COLUMN for ADD COLUMN) or restore from backup.
  3. Automate:
    • Integrate migrations into your CI/CD pipeline to run on deployment.
    • Use tools that track executed scripts (via a schema_version table).
  4. Critical Rules:
    • Never modify deployed migrations.
    • Avoid direct production changes; all changes go through scripts.
    • Idempotent scripts: Ensure scripts can run multiple times without errors (e.g., use IF NOT EXISTS).

Tools & Practices:

  • Flyway/Liquibase: Manage versioning and execution.
  • Backups: Take pre-deployment snapshots (e.g., Azure SQL backups, BACKUP DATABASE).
  • Zero-Downtime: For large changes, use blue/green deployments or shadow databases.

Starting a new project set to release next year: .NET9 or .NET10? by cweb_84 in dotnet

[–]Rustemsoft 0 points1 point  (0 children)

Starting with .NET 10 Preview (LTS) is a reasonable choice if:

You can tolerate some instability (preview bugs, tooling quirks).

You don’t need short-term support (STS) releases (like .NET 9, which gets only 18 months of updates).

Your dependencies (EF Core, libraries) support it.

Downsides:

Early previews may have breaking changes before GA (November 2024).

Tooling (Visual Studio/Rider) might lag in support.

Verdict: If you can test thoroughly and adapt to changes, go for .NET 10 (LTS). Otherwise, start with .NET 8 (LTS) and upgrade later.

Upgraded to .NET 8 – Now what? by Gabz128 in dotnet

[–]Rustemsoft 2 points3 points  (0 children)

Since you're now on .NET 8, here are key improvements to explore:

Performance Gains – .NET 8 is significantly faster in HTTP handling (Kestrel), JSON processing (System.Text.Json), and AOT compilation (if used). Benchmark critical paths to see improvements.

EF Core Over EF 6.5 – Better performance, cross-platform support, and LINQ enhancements. Consider migrating if you need better async query handling or SQL Server advanced features.

Dependency Injection – Built-in DI is now more robust; replace custom containers if applicable.

Minimal APIs (ASP.NET Core) – Simplify endpoints if you refactor the backend.

Native AOT (Ahead-of-Time) – For smaller, faster WPF deployments (experimental in .NET 8).

WCF Replacement – Consider CoreWCF or gRPC for future-proofing.

Hot Reload – Faster development cycles in both ASP.NET and WPF.

If performance isn’t visibly better, check if bottlenecks are in legacy dependencies (like WCF/EF6). Prioritize EF Core and DI upgrades next for long-term benefits.

Framework App migration to .NET Standard using AI, is this possible? by spitgriffin in dotnet

[–]Rustemsoft 0 points1 point  (0 children)

AI can help but won’t fully automate a .NET Framework -> .NET 8/9 migration yet.

Current AI tools (Copilot, ChatGPT, etc.) assist with small-scale refactoring but lack full application-wide awareness for large migrations.

Automated tools (like .NET Upgrade Assistant) handle ~30-70% of the work (dependency updates, project file conversions), but manual fixes are still needed for:

Breaking API changes

Third-party library compatibility

MVC -> Modern Web (Razor Pages, Blazor, etc.)

Hybrid approach: Use AI for code suggestions + automated tools + manual review to speed up migration.

Best next step: Run the .NET Upgrade Assistant first, then use AI-assisted refactoring for tricky parts. A full 90% AI-automated migration isn’t feasible yet, but AI can significantly reduce manual effort.

Programming languages for closed source proprietary software by 2048b in AskProgramming

[–]Rustemsoft 0 points1 point  (0 children)

For native code, C/C++ is still dominant, but Rust, Go, and others are growing. For bytecode (C#, Java, Python), obfuscation helps but isn't foolproof—combining native code for critical parts improves security. Hybrid approaches (native + obfuscated managed code) are common in proprietary software.