当前位置: 首页 > article >正文

dotnet4.0编译问题

因为最近在写cobaltstrike的execute-assembly内存加载的c#项目
用visual studio2022编译,最低net只能用6.0版本的,并且execute-assembly不支持
在这里插入图片描述
我想使用4.x版本进行编译,因为visual studio不支持,那么使用命令行进行编译
因为要用到MSBuild.exe,我直接选择低版本的
在这里插入图片描述
用x64或者另一个都可以,只要ConsoleApp2.csproj写上对应属性就好

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFrameworkVersion>v4.8</TargetFrameworkVersion> <!-- .NET Framework 4.8 -->
    <PlatformTarget>x64</PlatformTarget> <!-- 目标处理器架构设置为 x64 -->
    <RootNamespace>ConsoleApp2</RootNamespace>
    <AssemblyName>ConsoleApp2</AssemblyName>
	<Configuration Condition=" '$(Configuration)' == '' ">Release</Configuration> <!-- 默认配置为 Release -->
    <Platform Condition=" '$(Platform)' == '' ">x64</Platform> <!-- 默认平台为 x64 -->
    <OutputPath>bin\$(Configuration)\</OutputPath> <!-- 输出路径 -->
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="System" />
    <!-- 添加其他引用 -->
  </ItemGroup>
  <ItemGroup>
    <Compile Include="Program.cs" />
    <!-- 添加其他源文件 -->
  </ItemGroup>
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

我的项目代码为

using System;

namespace HelloWorldApp
{
    class Program
    {
        static void Main(string[] args)
        {
            string name;

            if (args.Length > 0)
            {
                name = args[0];
                Console.WriteLine($"你好, {name}!");
            }
            else
            {
                Console.WriteLine("没有提供命令行参数。请输入您的名字:");
                
            }    
        }
    }
}

但是编译会报错
在这里插入图片描述

说明字符串插值不能使用 , , 是在 C# 6.0 引入的,而 .NET Framework 4.0 默认使用的 C# 编译器版本是 4.0,它不支持这些特性
所以需要改成+拼接参数,如下

using System;

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            // 检查是否传入了命令行参数
            if (args.Length > 0)
            {
                // 如果传入了参数,使用第一个参数
                string name = args[0];
                Console.WriteLine("Hello, " + name + "!");
            }
            else
            {
                // 如果没有传入参数,使用默认值
                string defaultName = "world";
                Console.WriteLine("Hello, " + defaultName + "!");
            }
        }
    }
}

这样就可以成功生成了
在这里插入图片描述
在cobaltstrike中试试效果
在这里插入图片描述
可以看到成功达到效果,那么接下来看看完成一些功能
https://github.com/breakid/SharpUtils有一些功能,我来试试env的
在这里插入图片描述
可以看到成功显示出来env


http://www.kler.cn/a/318478.html

相关文章:

  • vue请求数据报错,设置支持跨域请求,以及2种请求方法axios或者async与await
  • Ceph 中Crush 算法的理解
  • 【计算机网络】UDP网络程序
  • @ComponentScan:Spring Boot中的自动装配大师
  • 论文阅读《BEVFormer v2》
  • 【计算机网络】【网络层】【习题】
  • 【系统架构设计师】专题:系统质量属性和架构评估
  • 康养为松,智能为鹤:华为全屋智能画出的松鹤长春图
  • 2024.9.24 数据分析
  • 努比亚z17努比亚NX563j原厂固件卡刷包下载_刷机ROM固件包下载-原厂ROM固件-安卓刷机固件网
  • 智慧城市主要运营模式分析
  • [附源码]宠物领养管理系统+SpringBoot
  • css实现居中的方法
  • C++ prime plus-4-编程练习
  • vue echarts tooltip使用动态模板
  • Web3技术在元宇宙中的应用:从区块链到智能合约
  • 搜维尔科技:手指舞测试Manus VR数据手套手指追踪功能
  • HtmlCss 基础总结(基础好了才是最能打的)五
  • 代码随想录算法训练营第二十八天| 122.买卖股票的最佳时机 II、55. 跳跃游戏、45.跳跃游戏 II、1005.K次取反后最大化的数组和
  • 线程知识点补充
  • uniapp map设置高度为100%后,会拉伸父容器的高度
  • 练习题 - Django 4.x Models Meta 元数据选项
  • C++类和对象(中)【下篇】
  • 考研数据结构——C语言实现插入排序
  • 2024百度的组织架构和产品分布
  • Java Collectors工具类