标签: csproj

如何获得项目csproj的默认命名空间(VS 2008)

我有VS 2008和csproj项目(C#Library).

在项目的属性中,具有程序集名称和默认名称空间.注意:每个类都有一个名称空间.

是否有可能在运行时获取默认命名空间的值?

我的目标是使用资源,我需要默认命名空间的值:

 Assembly assembly = Assembly.GetExecutingAssembly();

 //foreach (string resourceName in assembly.GetManifestResourceNames()){}

 Stream syntaxModeStream = assembly.GetManifestResourceStream(pathToResources
+ ".SyntaxModes.xml");
Run Code Online (Sandbox Code Playgroud)

更新:

彼得说我做不到.默认命名空间不存储在程序集中

var resource = assembly.GetManifestResourceNames().Single(p => p.EndsWith(".SyntaxModes.Xml"))
Run Code Online (Sandbox Code Playgroud)

存储的默认命名空间在哪里?

我只能使用Addins Visual Studio(DTE对象)阅读?

namespaces projects-and-solutions csproj visual-studio-2008

9
推荐指数
2
解决办法
4722
查看次数

C# - 在csproj文件中添加通配符和添加新文件

.csproj文件中,Visual Studio和Xamarin Studio默认保留对项目内使用的每个文件的引用.

<ItemGroup>
    <Compile Include="Utils\Foo1Utils.cs" />
    <Compile Include="Utils\Foo2Utils.cs" />
    <Compile Include="Services\FooService.cs" />
    ...
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

为了避免在每次添加文件时我们的解决方案中的csproj文件发生冲突,我们开始使用通配符:

<ItemGroup>
    <Compile Include="Utils\*.cs" />
    <Compile Include="Services\*.cs" />
    ...
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

问题是,似乎都在Visual Studio和Xamarin Studio是不可能的"解释"对我们使用通配符的IDE,当我们添加一个新的文件到项目中,他们添加一个新的参考文件忽略通配符*.cs上文件夹.它仍然是一个很好的解决方案,因为我们不需要在每次添加文件时都提交.csproj,但现在我们必须每次都重置它们......任何人都知道是否有解决方案?

编辑:与Rider(JetBrains)没有这个问题,如果在csproj中有一个通配符,我添加一个新文件一切正常.

c# csproj visual-studio

9
推荐指数
1
解决办法
2579
查看次数

csproj复制文件取决于操作系统

我正在使用.NET Core构建跨平台类库.根据为使用.csproj文件构建C#.NET Core项目的操作系统,我需要将本机库复制到项目的输出目录.例如,对于OS XI想要复制.dylib文件,对于Windows我要复制.DLL文件,对于Linux我要复制.so文件.

如何使用.csproj ItemGroup中的Condition子句执行此操作?

  <ItemGroup>
    <Content Include="libNative.dylib" Condition=" '$(Configuration)|$(Platform)' == 'Debug|OSX' ">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
  </ItemGroup>   
Run Code Online (Sandbox Code Playgroud)

$(Platform)似乎不起作用.我可以使用不同的变量吗?

.net c# csproj .net-core

9
推荐指数
2
解决办法
2022
查看次数

使用新的csproj格式将文件放入nupkg中的"analyzer"目录中

我正在使用新的.csproj文件格式来打包NuGet包,而不使用.nuspec文件.

问题是,它将我的dll放在\ lib \中我需要把它放在\ analyzers \

我是谁做到的?

csproj nuget roslyn-code-analysis

9
推荐指数
1
解决办法
160
查看次数

如何在.NET Core 1.1中的程序集上使用自定义属性

虽然我发现这篇关于在程序集上检索自定义属性的帖子,但我不确定如何在.NET Core 1.1中为程序集添加自定义属性.在.NET Framework中,我会做类似的事情:

[assembly: AdditionalLocation(@"..\ReadFromHere")]
Run Code Online (Sandbox Code Playgroud)

但我在Visual Studio中的netcore1.1项目没有AssemblyInfo.cs.我在哪里声明程序集的自定义属性?我可以在.csproj文件中放一些东西吗?

csproj .net-core

9
推荐指数
2
解决办法
2684
查看次数

在ASP.NET Core的stacktrace中包含文件名和行号

在.NET完整框架中,可以在发布版本生成的堆栈跟踪中包含文件名和行号,方法是在输出中包含调试信息并将调试信息设置为pdb-onlyfull.在ASP.NET Core和Azure Function Apps中工作时,如果将生成的XML添加到项目文件中,这些选项似乎不再可以通过UI访问或工作.当我创建一个新项目并在发布模式下运行它时,文件名和行号不是堆栈跟踪的一部分.

如何在ASP.NET Core中的发布版本中包含文件名和行号?

更新:重新创建的步骤!

添加新的异常记录中间件:

app.Use(async (context, next) =>
{
    try
    {
        await next.Invoke();
    }
    catch (Exception e)
    {
        Console.WriteLine(e.ToString());
    }
});
Run Code Online (Sandbox Code Playgroud)

在生成的默认值中抛出异常ValuesController:

[HttpGet]
public IEnumerable<string> Get()
{
    throw new Exception();
}
Run Code Online (Sandbox Code Playgroud)

构建项目(调试/发布无关紧要).使用exe文件运行应用程序并点击/ api/values.Stacktrace不包含文件名和行号:

System.Exception: Exception of type 'System.Exception' was thrown.
   at WebApplication50.Controllers.ValuesController.Get()
   at lambda_method(Closure , Object , Object[] )
   at Microsoft.Extensions.Internal.ObjectMethodExecutor.Execute(Object target, Object[] parameters)
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.<InvokeActionMethodAsync>d__12.MoveNext()
Run Code Online (Sandbox Code Playgroud)

(我不希望这变成一个优点/缺点.我知道有些人认为包含这些信息是死亡罪,有些人不这样做:)

csproj visual-studio .net-core asp.net-core azure-functions

9
推荐指数
1
解决办法
736
查看次数

如何在我的.csproj文件中包含DLL?

好吧,问题是我没有安装Visual Studio而且我不想安装它,因此,我制作了一个批处理文件来编译我的.csproj文件和所有源文件.

问题是我不知道如何包含.dll文件.这是我的.csproj文件的当前代码:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <AssemblyName>Project</AssemblyName>
    <OutputPath>Bin\</OutputPath>
  </PropertyGroup>

  <ItemGroup>
        <!-- .cs files -->
    <Compile Include="program.cs" />
  </ItemGroup>

  <Target Name="Build">
    <MakeDir Directories="$(OutputPath)"      Condition="!Exists('$(OutputPath)')" />
    <Csc Sources="@(Compile)" OutputAssembly="$(OutputPath)$(AssemblyName).exe" />
  </Target>
</Project>
Run Code Online (Sandbox Code Playgroud)

我需要更改什么才能将dll文件包含/引用到编译过程中?

c# msbuild compilation csproj c#-4.0

8
推荐指数
1
解决办法
9923
查看次数

使用Visual Studio代码并使用定义的符号

编辑:我编辑了整个问题,因为这不仅适用于Unity3D,而且适用于所有.sln项目.

我在工作中的Macbook上安装了Visual Studio Code(非Visual Studio,但是这个:https://code.visualstudio.com/).对于普通和Unity3D项目,VSCode正常工作.我在所有类上获得Intellisense,包括Unity3D特定的类,如GameObject.所以我认为我的安装和启动顺序是正确的.

我遇到的唯一问题是VSCode似乎没有识别.csproj文件中定义的常量.首先我注意到了一些Unity3D插件,但它在普通的Visual Studio项目中也是持久的.

我的示例项目是从互联网上下载的虚拟应用程序,但它完全适用于MonoDevelop.这是我的代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DummyConsoleApplication
    {
    class Program
        {
            static void Main(string[] args)
            {
                tester();
            }

            #if DEBUG
            static void tester(){

            }
            #endif
        }
    }
Run Code Online (Sandbox Code Playgroud)

Main中的函数调用导致编辑器上找不到异常,但它编译得很好,因为.csproj文件有这一行:

<DefineConstants>DEBUG;TRACE</DefineConstants>
Run Code Online (Sandbox Code Playgroud)

如果这是VSCode的正常行为的任何验证将非常感激.此外,如果有人知道任何解决方案,甚至是hacky,解决这个错误并强制Intellisense自动完成也会有所帮助.

我得到的错误是:

The name 'tester' does not exist in the current context [DummyConsoleApplication]
Run Code Online (Sandbox Code Playgroud)

我的硬件是带Yosemite的Macbook,我的编译器是dnx-mono.1.0.0-beta4.

c# constants csproj visual-studio-code

8
推荐指数
1
解决办法
1749
查看次数

.NET Core - 构建项目指定 ReferencePath

我有一个带有经典参考的.NetCore平台的.csproj。我正在为开发环境使用该属性。但是我应该在 CI 环境中构建csproj,其中引用的程序集放置在不同的目录中。在经典的net4 上,我使用了MSBuild工具的参数。但是“dotnet build”没有类似的论点。作为后备,我找到了“dotnet msbuild”命令,但此工具忽略了该参数并向我显示hintpath/p:ReferencePath/p:ReferencePath=xxx

警告 MSB3245:无法解析此引用。找不到程序集“AssemblyName”。检查以确保程序集存在于磁盘上。如果您的代码需要此引用,您可能会收到编译错误。

请指导我,我可以检查什么,dotnet-build / dotnet-msbuild工具在哪里搜索引用的程序集以及如何指定该目录?

.net c# msbuild csproj .net-core

8
推荐指数
2
解决办法
2380
查看次数

如何从 dotnet watch run 中排除某些文件类型?

希望进行以下设置:

我正在开发 Blazor 应用程序,并使用官方的 css 隔离捆绑器。不过,我使用的是Less,并安装了 Less 转换器,它在构建时创建所需的 css。

然而,通过运行我的应用程序dotnet watch run,它现在通常会陷入无限循环。

其原因可能是dotnet watch run看到文件发生更改*.razor.css、重建,并且循环不断重复。

所以这是我的问题:

如何配置我的 csproj(新的网络标准格式)以**\*.razor.css从监视过程中排除?如果它从我的 VS 解决方案整体中消失也没关系。

msbuild csproj .net-core dotnet-tool

8
推荐指数
2
解决办法
2724
查看次数