我正在开发一个自动化的c#构建,它需要我编写/生成csproj文件,然后使用命令行编译它。出于某种原因而创建DLL没有问题,它包含的类被转储到全局名称空间,而不是我已经指定的。有没有人知道这里可能会发生什么?手写的msbuild忽略cname dll的rootnamespace
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<OutputType>Library</OutputType>
<RootNamespace>SimpleDependency.Test</RootNamespace>
<AssemblyName>simpledependency.test</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<ItemGroup>
<Compile Include="*.cs" />
</ItemGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>Bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
我已经MSBuild的设置为.NET 4.0,和我在命令行运行此命令:
msbuild /property:Configuration=Release /property:Platform=AnyCPU
我知道,它成功地生成的dll,因为我然后让另一个依赖项目使用课堂上,我在这个项目定义,但如果我有:
using SimpleDependency.Test;
在代码中,我得到的编译错误说,它不能找到命名空间“SimpleDependency”。没有这个使用声明,它编译罚款和工作。任何人有任何想法?
您的类是否使用SimpleDependency.Test命名空间定义?定义RootNamespace不会在没有名称空间的所有类中强制执行它。 – 2014-09-24 21:21:09
这就是定义一个根名称空间的全部要点,就是不必将它写在所有的类 – Deleter 2014-09-25 17:30:55
对不起,这应该是一个问题,是不是根名称空间的点? – Deleter 2014-09-25 17:55:08