8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

错误 NETSDK1005 资产文件,确保恢复已运行,并且已在项目的 TargetFrameworks 中包含“net8.0-android”

Igor Kondrasovas 3月前

67 0

我正在使用 Windows 11 开发 Maui 应用程序,然后我降级到 Windows 10。现在出现此错误。**\'错误(活动)NETSDK1005 资产文件'D:\Csharp\Maui\IdealDiagnosis.Maui\

我正在使用 Windows 11 开发 Maui 应用程序,然后我降级到 Windows 10。现在出现此错误。**\'错误(活动)NETSDK1005 资产文件'D:\Csharp\Maui\IdealDiagnosis.Maui\IdealDiagnosis\obj\project.assets.json' 没有'net8.0-android' 的目标。确保恢复已运行并且您已在项目的 TargetFrameworks 中包含'net8.0-android'。
IdealDiagnosis (net8.0-android) C:\Program Files\dotnet\sdk\8.0.303\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets 266\' **

项目文件中添加的包

就像在这张 图片 image2 ,我还注意到项目属性文件中有 2 个应用程序选项,第一个选项包括其他 maui 项目中的 win 32 选项 mot

这里

我尝试手动删除软件包的行然后再次添加它们,尝试删除 bin 和 obj 文件夹,尝试重新加载项目,但仍然出现相同的错误

这个错误是不是因为我更换了电脑的 Windows 版本

我注意到,如果我删除除 Windows 之外的软件包的第一行,然后运行该应用程序,该应用程序仅在 Windows 机器上正常运行

帖子版权声明 1、本帖标题:错误 NETSDK1005 资产文件,确保恢复已运行,并且已在项目的 TargetFrameworks 中包含“net8.0-android”
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Igor Kondrasovas在本站《visual-studio》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 是的,为什么不使用 Windows 10 进行开发呢?

  • 我正在尝试开发一个用于科学计算的 Mac OS 库。它可以在 Linux 上运行并编译文件,但出于某种原因,我在 Mac.ld 上遇到了奇怪的错误:__DATA_CONST 段丢失

    我正在尝试开发一个用于 Mac OS 的科学计算库。它在 Linux 上可以运行并编译文件,但出于某种原因,我在 Mac 上遇到了奇怪的错误。

    ld: __DATA_CONST segment missing SG_READ_ONLY flag in '/Users/ec2-user/libdescriptor/bin/libdescriptor.dylib'
    

    或者

    ld: __DATA_CONST segment permissions is not 'rw-' in '/Users/ec2-user/libdescriptor/bin/libdescriptor.dylib'
    

    它是一个与我的库链接的 python pybind11 模块。

    以下是我的库的 make 文件, libdescriptor.dylib

    CXX := /opt/homebrew/Cellar/llvm@13/13.0.1_2/bin/clang++
    CXXFLAGS := -std=c++17 -O3 -dynamiclib -fuse-ld=lld -flto  -Iinclude
    
    #Enzyme lib location
    ENZYME_LIB := /usr/local/lib/LLDEnzyme-13.dylib
    
    # Directories
    SRCDIR := src
    INCDIR := include
    OBJDIR := obj
    BINDIR := bin
    
    # Output library
    TARGET := $(BINDIR)/libdescriptor.dylib
    
    # Source files
    SRCFILES := $(wildcard $(SRCDIR)/*.cpp) $(wildcard $(SRCDIR)/*/*.cpp)
    # Object files
    OBJFILES := $(patsubst $(SRCDIR)/%.cpp,$(OBJDIR)/%.o,$(SRCFILES))
    
    # Create directories if they don't exist
    $(shell mkdir -p $(BINDIR) $(OBJDIR) $(OBJDIR)/maths)
    
    # Default target
    all: $(TARGET)
    
    # Link the executable
    $(TARGET): $(OBJFILES)
        $(CXX)  -flto $(CXXFLAGS) -o $@ $^  -Wl,--lto-legacy-pass-manager -Wl,-mllvm -load=$(ENZYME_LIB) -Wl,-mllvm,-enzyme-loose-types 
    
    # -Wl,-segprot,__DATA_CONST,r,r  <- modifications suggested by ChatGPT
    #-Wl,-segprot,__DATA_CONST,ro,ro
    
    # Compile source files into object files
    $(OBJDIR)/%.o: $(SRCDIR)/%.cpp
        $(CXX) $(CXXFLAGS) -c $< -o $@
    
    # Clean up build files
    clean:
        rm -rf $(OBJDIR) $(BINDIR)
    
    .PHONY: all clean
    

    它编译代码,然后调用名为 Enzyme 来区分函数。因此,它使用 LLVM 13 和 lld 链接器,而不是默认的 Mac OS 链接器。

    编译时没有错误。当我将其链接到我的 Pybind11 模块(下面的 CMake 文件)时,我得到了 _DATA_CONST 上面提到的错误。我尝试在 pybind11 步骤上交换链接器和编译器,但没有帮助。

    pybind11 模块的 Cmakefile:

    cmake_minimum_required(VERSION 3.16)
    
    project(libdescriptor)
    
    set(CMAKE_BUILD_TYPE Release)
    set(CMAKE_CXX_STANDARD 17)
    set(CMAKE_CXX_STANDARD_REQUIRED YES)
    
    # Ensure using LLVM's LLD linker
    set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fuse-ld=lld -Wl,-segprot,__DATA_CONST,r,r")
    
    # Include directories
    include_directories(include)
    
    # Pybind11
    find_package(pybind11 REQUIRED)
    
    # Source files for the Pybind11 module
    file(GLOB PYSOURCES python_bindings/*.cpp python_bindings/**/*.cpp)
    
    # Create the Pybind11 module
    pybind11_add_module(libdescriptor ${PYSOURCES})
    
    # Path to your custom library
    set(MY_CUSTOM_LIB_PATH /Users/ec2-user/libdescriptor/bin)
    find_library(DESCRIPTOR_LIB NAMES descriptor PATHS ${MY_CUSTOM_LIB_PATH})
    
    if(NOT DESCRIPTOR_LIB)
        message(FATAL_ERROR "libdescriptor.dylib not found in ${MY_CUSTOM_LIB_PATH}")
    endif()
    
    # Link the Pybind11 module against the custom library
    target_link_libraries(libdescriptor PUBLIC ${DESCRIPTOR_LIB})
    target_include_directories(libdescriptor PUBLIC ${MY_CUSTOM_LIB_PATH})
    

    这是什么错误,如何处理?以下是 otools 的输出,如果有帮助的话

    (python3) ec2-user@ip-172-31-22-4 bin % otool -l ../bin/libdescriptor.dylib | grep -A 20 '__DATA_CONST'                          
      segname __DATA_CONST
       vmaddr 0x0000000000064000
       vmsize 0x0000000000004000
      fileoff 409600
     filesize 16384
      maxprot 0x00000003
     initprot 0x00000003
       nsects 2
        flags 0x0
    Section
      sectname __got
       segname __DATA_CONST
          addr 0x0000000000064000
          size 0x0000000000000110
        offset 409600
         align 2^3 (8)
        reloff 0
        nreloc 0
         flags 0x00000006
     reserved1 0 (index into indirect symbol table)
     reserved2 0
    Section
      sectname __const
       segname __DATA_CONST
          addr 0x0000000000064110
          size 0x0000000000000a30
        offset 409872
         align 2^3 (8)
        reloff 0
        nreloc 0
         flags 0x00000000
     reserved1 0
     reserved2 0
    Load command 2
          cmd LC_SEGMENT_64
      cmdsize 312
      segname __DATA
       vmaddr 0x0000000000068000
       vmsize 0x0000000000064000
      fileoff 425984
     filesize 327680
      maxprot 0x00000003
     initprot 0x00000003
       nsects 3
    
  • 我正在尝试从 C# webforms 连接到 MS Access 数据库。我这样做了:var parameters = new KeyValuePair [] { 新的键值对

    我正在尝试从 C# webforms 连接到 MS Access 数据库。

    我这样做了:

    var parameters = new KeyValuePair<string, object>[]
                 {
                    new KeyValuePair<string, object>("@ProjectId", currentInfo.ProjectId),
                    new KeyValuePair<string, object>("@core", Convert.ToInt16(catalogue.Core.ToString())),
                    new KeyValuePair<string, object>("@sizee", catalogue.Size)),
                    new KeyValuePair<string, object>("@applicationId", Convert.ToInt32(applicationComboBox.SelectedValue.ToString()))
                 };
    DataTable typesTable = helper.GetRowsByQuery("FillType",parameters, currentInfo.DBPath);
    

    这是连接数据库的方法:

    public DataTable GetRowsByQuery(string queryOrTable, KeyValuePair<string, object>[] parameters, string dbPath)
    {
        DataTable table = new DataTable();
    
        OleDbDataAdapter adapter = new OleDbDataAdapter();
        OleDbConnection connection = new OleDbConnection(GetStringConnection(dbPath));
    
        string sqlCommand = GetSqlCommand(queryOrTable);
    
        OleDbCommand command = new OleDbCommand(sqlCommand, connection);
    
        if (parameters != null)
        {
            foreach (KeyValuePair<string, object> o in parameters)
            {
                var parameter = new OleDbParameter(o.Key, o.Value);
                SetOleDbTypeAndSize(parameter, o.Value);
                command.Parameters.Add(parameter);                
            }
        }
    
        command.CommandText = sqlCommand;
    
        adapter.SelectCommand = command;
    
        try
        {
            connection.Open();
    
            if (table == null)
            {
                table = new DataTable();
                table.Locale = System.Globalization.CultureInfo.InvariantCulture;
                adapter.FillSchema(table, SchemaType.Source);
            }
    
            adapter.Fill(table);
        }
        finally
        {
            if (connection.State == ConnectionState.Open)
            {
                connection.Close();
            }
        }
    
        return table;
    }
    

    查询命令如下

    SELECT DISTINCT Catalogue.Type  
    FROM (CableProperty  
    INNER JOIN Catalogue ON CableProperty.CatalogueId = Catalogue.Id)    
    WHERE (Catalogue.Core = @core) 
      AND (Catalogue.[Size] = '@sizee') 
      AND (CableProperty.ProjectId = @projectId) 
      AND (CableProperty.CableApplicationId = @applicationId) 
                   
    

    查询直接在 MS Access 数据库本身上返回结果,但没有在我的 C# 应用程序中返回任何结果....

    如果我删除内连接条件 Catalogue

    (Catalogue.Core = @core) AND (Catalogue.[Size] = '@sizee')
    

    它还在应用程序中返回结果。

  • 您可以考虑参考以下文档

  • 为了进行调试,请将以下内容添加到您的代码中

  • 不要在字符串参数周围添加引号。要比较的等效原始 SQL 将是这样的

  • 我在 Visual Studio 2022 Community 版本 17.10.4 中找不到 UWP 模板。我使用默认设置安装了该程序,然后想安装“通用 Windows

    我在 Visual Studio 2022 Community 版本 17.10.4 中找不到 UWP 模板。我使用默认设置安装了该程序,然后想安装“通用 Windows 平台开发”工作负载,但我找不到它。有人遇到过类似的问题吗?

    我尝试安装最新的 Windows SDK,但没有帮助。我也在互联网上搜索解决方案,但没有找到任何有用的信息。

  • 正如评论中指出的那样,您没有用引号括住参数。

    而且,真的不需要尝试创建您自己的参数列表(密钥对),因为 ADO.NET SQL 命令对象已经为您预先构建了这样一个集合。

    请记住,当使用 MS Access 数据引擎时,参数的顺序很重要,并且必须与它们在查询中出现的顺序相匹配。

    所以这:

            string sSQL =
                @"SELECT DISTINCT Catalogue.Type  
                FROM (CableProperty  
                INNER JOIN Catalogue ON CableProperty.CatalogueId = Catalogue.Id)    
                WHERE (Catalogue.Core = @core) 
                  AND (Catalogue.[Size] = @sizee) 
                  AND (CableProperty.ProjectId = @projectId) 
                  AND (CableProperty.CableApplicationId = @applicationId)";
    
    
            OleDbCommand cmdSQL = new OleDbCommand(sSQL);
            cmdSQL.Parameters.Add("@core", OleDbType.Integer).Value = 123;
            cmdSQL.Parameters.Add("@sizee", OleDbType.VarWChar).Value = "big";
            cmdSQL.Parameters.Add("@projectId", OleDbType.Integer).Value = 789;
            cmdSQL.Parameters.Add("@applicationId", OleDbType.Integer).Value = 5555;
    
            DataTable CatItems = General.MyRstP(cmdSQL);
    

    那么,您在整个应用程序中都可以使用一个易于使用的“通用”例程吗?

    我建议使用这个公共静态例程:

        public static DataTable MyRstP(OleDbCommand cmd)
        {
            DataTable rstData = new DataTable();
            using (OleDbConnection conn = new OleDbConnection(GetConStr()))
            {
                using (cmd)
                {
                    cmd.Connection = conn;
                    try
                    {
                        conn.Open();
                        rstData.Load(cmd.ExecuteReader());
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Error: " + ex.Message);
                    }
                }
            }
            return rstData;
        }       
    

    请注意,您甚至可以使用 \'?\' 作为 SQL 中的参数,因为正如我所指出的,在 Access 的情况下,参数名称实际上并不重要,只有添加参数的顺序才重要。

    因此,我认为尝试创建自己的密钥对没有什么价值,因为如上所述,ADO.NET SQL 命令对象已经有这样的内置集合,更重要的是,您可以使用 OleDbType 对您进行强转换(自动)输入参数类型。

    还要注意例程如何在 using 语句中包装连接对象,这也强烈建议正确处理与数据库的连接。

  • 嗨,是的,我就是这个意思。我在安装程序中寻找它,但没有找到类似的东西。

  • MS Access 不支持命名参数,您应该使用问号 (?) 作为占位符。例如:

    foreach (var param in parameters) 
    { 
      OleDbParameter oleDbParameter = new OleDbParameter("?", param.Value);
      SetOleDbTypeAndSize(oleDbParameter, param.Value);
      command.Parameters.Add(oleDbParameter);
    }
    
  • 从 Visual Studio 17.10 开始, 它被“Windows 应用程序开发”取代 :

    在 Visual Studio 17.10 中,新的“Windows 应用程序开发”工作负载现已可供开发人员使用,只需单击一下即可使用 .NET 或 C++ 编写时尚、现代且快速的 WinUI 应用程序。此工作负载使用针对最新一代 WinUI + Windows App SDK 的工具取代了旧的“通用 Windows 平台开发”工作负载。

    您应该会看到一个需要您安装的“Windows 应用程序开发”工作负载:

    Windows application development workload in the installer

  • 非常感谢!我没注意到

返回
作者最近主题: