C# ';dotnet运行';不将文件复制到输出目录
我正在尝试测试在一个应用程序中为Windows和macOS提供两个动态链接库的能力,以便它可以选择C# ';dotnet运行';不将文件复制到输出目录,c#,.net,.net-core,C#,.net,.net Core,我正在尝试测试在一个应用程序中为Windows和macOS提供两个动态链接库的能力,以便它可以选择DLLImport所需的链接库。我正在Azure管道上进行测试,该管道具有以下任务: 所以dll和dylib首先从单独的管道工件下载,然后我用 dotnet new console -n ConsoleApp dotnet run --project ConsoleApp/ConsoleApp.csproj 然后复制dll和动态库文件: Copy-Item test.dylib -Destin
DLLImport
所需的链接库。我正在Azure管道上进行测试,该管道具有以下任务:
所以dll和dylib首先从单独的管道工件下载,然后我用
dotnet new console -n ConsoleApp
dotnet run --project ConsoleApp/ConsoleApp.csproj
然后复制dll和动态库文件:
Copy-Item test.dylib -Destination ConsoleApp
Copy-Item test.dll -Destination ConsoleApp
然后为csproj设置内容:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<None Update="test.dll">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="test.dylib">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>
最后,使用
dotnet new console -n ConsoleApp
dotnet run --project ConsoleApp/ConsoleApp.csproj
并获取一个错误:
Unhandled exception. System.DllNotFoundException: Unable to load DLL 'test' or one of its dependencies: Access is denied. (0x80070005 (E_ACCESSDENIED))
at ConsoleNetFramework.Program.Foo()
at ConsoleNetFramework.Program.Main(String[] args) in D:\a\1\s\ConsoleApp\Program.cs:line 15
当上一个任务运行时,我们可以看到dll和dylib没有复制到输出目录:
---- ------------- ------ ----
-a---- 5/12/2021 12:28 PM 5120 ConsoleApp.dll
Directory: D:\a\1\s\ConsoleApp\bin\Debug\net5.0
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 5/12/2021 12:28 PM 4608 ConsoleApp.dll
Directory: D:\a\1\s\ConsoleApp\obj\Debug\net5.0\ref
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 5/12/2021 12:28 PM 5120 ConsoleApp.dll
Directory: D:\a\1\s\ConsoleApp\obj\Debug\net5.0
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 5/12/2021 12:28 PM 4608 ConsoleApp.dll
Directory: D:\a\1\s\ConsoleApp
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 5/12/2021 12:27 PM test.dll
d----- 5/12/2021 12:27 PM test.dylib
所以我不知道为什么文件没有复制到输出,因为我有
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
始终
在csproj中查找这些文件
在我的本地机器上,所有这些步骤都运行良好。我做错了什么?据我所知,Azure管道总是在admin下运行任务。